Mam ogólną podklasę Backbone.View
, która ma odbiornik zdarzeń close
.Sub Class a Backbone.View Sub Class i zachowania zdarzeń
var GenericView = Backbone.View.extend({
events : {
"click .close" : "close"
},
close : function() {
console.log("closing view");
}
});
Chcę dokonać podklasy tej ogólnej klasy i dodać kilka nowych zdarzeń. Jednak poniższy tekst spowoduje nadpisanie super obiektu (powyżej) obiektu zdarzenia. Na przykład.
var ImplementedView = new GenericView({
// setting this will stop 'close' in Super Class from triggering
events : {
"click .submit" : "submit"
}
});
W jaki sposób utworzyć podklasę, w tym przypadku ImplementedView
i zachować zdarzenia?
Znalazłem jeden sposób, aby to osiągnąć, rozszerzając obiekt zdarzenia, gdy konstruowana jest klasa potomna. Jednak muszę ponownie uruchomić this.delegateEvents()
, który, jak sądzę, nie jest dobry. Czy ktoś może to komentować?
var ImplementedView = new GenericView({
initialize : function (options) {
_.extend(this.events, {
"click .submit" : "submit"
});
// re-attach events
this.delegateEvents();
}
});
Mogę się mylić, ale nie widzę, żebyś gdzieś podklasy? ImplementedView jest po prostu zmienną odnoszącą się do instancji GenericView ... – PhD
Musisz jawnie użyć '_.rozszerzyć (...)' lub mieć podobną funkcjonalność jak metoda '.extend' widoków ... przez backbone.js, aby uzyskać wskazówkę. Ale jeśli mam rację, to z powodu braku wyraźnego dziedzictwa w łańcuchu prototypów. Wywoływanie 'this.delegateEvents()' lub 'Backbone.View.prototype.delegateEvents.call (events)' wydaje się być sposobem, aby przejść – PhD
Będę przeglądać dokumenty. powtórz swój pierwszy komentarz: Nie dzwonię do nowego operatora, choć to było podklasy poprzez rozszerzenie Backbone.Model? – Ross