Атрибут пустого массива Backbone.js

Я столкнулся со странной проблемой с моделью 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. Кто-нибудь знает, что может вызвать это?

РЕДАКТИРОВАТЬ Я изменил модель, создав экземпляр массива виджетов в методе инициализации, чтобы избежать ссылок между несколькими экземплярами, и начал использовать магистраль -вложенный безуспешно.

13
задан mu is too short 6 November 2014 в 22:25
поделиться