С чем могут связываться мои модели при сбросе коллекции? - PullRequest
0 голосов
/ 02 октября 2011

Есть ли какие-либо события, с которыми мои модели могут связываться, чтобы знать, что их коллекция была сброшена?

Когда я звоню:

collection.reset()

Я хочу, чтобы эти удаленные модели были уничтоженыповерните любые взгляды, чтобы знать, что они ушли.С чем мне здесь связываться?

Ответы [ 2 ]

2 голосов
/ 02 октября 2011

Из тонкой инструкции :

сброс collection.reset (модели, [опции])
[...] запуск одного события "reset" в конце.

Так что связывайтесь с событием коллекции reset и надейтесь, что никто не использует опцию {silent: true}, чтобы делать вещи за вашей спиной.

1 голос
/ 02 октября 2011

@ mu ответ правильный, но вам также может понадобиться знать, что модель, добавляемая в коллекцию, имеет свойство .collection, которое указывает на родительскую коллекцию. Поэтому, если вы создаете экземпляры своих моделей вручную, вы можете просто сделать это:

var myModel = new MyModel();
collection.add(myModel);
collection.bind('reset', model.cleanUp(), model);

Но если вы создаете экземпляры своих моделей через коллекцию, например, с collection.fetch() необходимо связать с коллекцией в методе initialize() модели:

var MyModel = Backbone.Model.extend({
    initialize: function() {
        if (this.collection) {
            this.collection.bind('reset', this.cleanUp(), this);
        }
    }
    // etc
});
...