Магистраль прослушивает событие изменения при сборе коллекции

Можно ли прослушивать событие добавления, удаления, сброса, изменения одной коллекции, которая является частью другой коллекции?

Например: Библиотека с коллекцией книг. И у каждой книги может быть несколько авторов. Есть ли способ прослушать событие об авторах в модели библиотеки?

Library.js

var Library = Backbone.Model.extend({
    initialize: function() {
        this.get('books').on('change:authors', this.onChange);
    }
}

Books.js

var Book = Backbone.Model.extend({
})
var Books = Backbone.Collection.extend({
    Model: Book
})

Authors.js

var Author = Backbone.Model.extend({
})
var Authors = Backbone.Collection.extend({
    Model: Author
})

person Hemanth S R    schedule 30.06.2017    source источник
comment
Уточните, пожалуйста, некоторые вопросы. Почему библиотека должна прислушиваться к изменениям автора (что она будет делать с этими событиями)? Будет ли ваш сервер предоставлять всю структуру данных массива книг с массивом авторов (одна конечная точка) или вы изменяете каждую книгу с данными об авторе? Вам нужно записывать изменения обратно на сервер (можно ли создавать / редактировать авторов)? Как вы определяете авторов каждой книги, если вы меняете книги (1-й вопрос)?   -  person try-catch-finally    schedule 01.07.2017
comment
Вам действительно стоит переосмыслить такое прослушивание вложенных коллекций, это действительно неэффективно и жестко в долгосрочной перспективе. Я бы даже не стал помещать коллекцию в атрибуты. Существуют разные способы вложить коллекцию в модель, выбирайте с умом.   -  person Emile Bergeron    schedule 04.07.2017


Ответы (1)


Да .. но каждому:

this.get('books').forEach(function(book) {
    book.get('authors').on('change', this.onChage)
});
person AlexisCaffa    schedule 03.07.2017