Я столкнулся со странной проблемой с моделью Backbone.js, где член массива отображается как пустой. Это выглядит примерно так:
var Session = Backbone.Model.extend({
defaults: {
//...
widgets: []
},
addWidget: function (widget) {
var widgets = this.get("widgets");
widgets.push(widget);
this.trigger("change:widgets", this, widgets);
},
//...
// I have a method on the model to grabbing a member of the array
getWidget: function (id) {
console.log(this.attributes);
console.log(this.attributes.widgets);
//...
}
});
Затем я добавляю виджет через addWidget
. При попытке getWidget
результат, который я получаю (в Chrome ), это:
Object
widgets: Array[1]
0: child
length: 1
__proto__: Array[0]
__proto__: Object
[]
Он показывает, что виджеты не пусты при ведении журнала this.attributes
, но отображаются как пустые при ведении журнала this.attributes.widgets
. Кто-нибудь знает, что может вызвать это?
РЕДАКТИРОВАТЬ Я изменил модель, создав экземпляр массива виджетов в методе инициализации, чтобы избежать ссылок между несколькими экземплярами, и начал использовать магистраль -вложенный безуспешно.