mam widok, który zajmuje collection
jak poniżej:Binding wydarzenie zmiana Backbone przypisać model w kolekcji
MyView = Backbone.View.extend({
initialize: function() {
this.collection.on("change://an attribute of a model in aCollectionToRender", someAction);
}
});
var MyViewInstance = new MyView({
collection: aCollectionToRender
});
Zasadniczo nie chcę MyView
do nasłuchiwania zmian na całą kolekcję, tylko pojedynczy atrybut modelu, który zawiera kolekcja.
Zdaję sobie sprawę, istnieje wiele alternatyw do tego:
- Tworzenie widoków dla każdego modelu
aCollectionToRender
i dołączyć.on("change")
wydarzeń w tych widokach. Nie chcę tego robić, ponieważ nie jest to właściwe postępowanie w mojej sytuacji. - Po prostu zdarzenie
this.collection.on("change")
i filtr obsługi zdarzeń na podstawie moich wymagań. Jest to mniej eleganckie i jeśli Backbone pozwala już na zapisywanie filtrów zdarzeń, o co pytałem powyżej, jest to duplikat kodu:
Zastanawiam się, czy istnieje sposób na zapisanie detektora zdarzeń, który już filtruje. To pytanie może być również duplikatem; Wyglądałem, ale nie znalazłem nic takiego, ale jest wiele pytań dotyczących kręgosłupa.
Doh! Myślę, że masz rację! Z jakiegoś powodu myślałem, że gdy jest to kolekcja, 'attributeName' w' change: attributeName' odnosi się do atrybutu kolekcji, a nie do modelu. – Jay
ok, ale jak to zrobić: this.collection.on ("change", function (model, property) {// pobierz właściwość, która została tutaj zmieniona ...}); ??? –