инициировать событие "готовность" коллекции после логики настройки каждой модели

У меня есть коллекция, представляющая дерево. Каждая модель имеет родительский атрибут, который становится идентификатором сервера. После сброса коллекции с входящими данными каждая модель должна найти своего родителя в коллекции и установить ссылку в качестве атрибута вместо простого идентификатора. После этого должно быть одно событие, инициированное из коллекции, что она готова к рендерингу.

var node = Backbone.Model.extend({
    initialize: function(){
        //reset event fired after all models are in collection,
        //so we can setup relations
        this.collection.on('reset', this.setup, this);
    },
    setup: function(){
        this.set('parent', this.collection.get(this.get('parent')));
        this.trigger('ready', this);//-->to collection event aggregator?
    }
});
var tree = Backbone.Collection.extend({model: node})

Есть ли какой-нибудь чистый способ увидеть все модели, сделанные с его настройкой? Или мне нужно написать собственный агрегатор событий в коллекции?


person demon.mhm    schedule 11.11.2012    source источник


Ответы (1)


На самом деле вам нужно привязать событие reset к Collection, а не к Model.

var Node = Backbone.Model.extend({

}),

Tree = Backbone.Collection.extend({
    model: Node,
    initialize: function() {
        this.on('reset', this.setup, this);
    },
    setup: function() {
        this.each(this.updateModel, this);
        //Here you have all your models setup
    },
    updateModel: function(m) {
        m.set({
            parent: this.get(m.get('parent'));
        });
    }
})
person Shuping    schedule 12.11.2012