Я столкнулся с нечетной проблемой с моделью 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
он отображается как пустой. Кто-нибудь знает, что может вызвать это?
ИЗМЕНИТЬ Я изменил модель, чтобы создать экземпляр массива виджетов в методе инициализации, чтобы избежать ссылок на несколько экземпляров, и я начал использовать backbone-nested с не повезло.