配列メンバーが空白として表示される 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
。誰がこれを引き起こすのか知っていますか?
EDIT 複数のインスタンス間での参照を避けるために、初期化メソッドでウィジェット配列をインスタンス化するようにモデルを変更しました。