3 Stimmen

Füge Ereignisbehandlungsroutinen hinzu, wenn eine Ansicht in backbone.js erweitert wird?

Ich bin ein Backbone.js Anfänger und habe Schwierigkeiten zu verstehen, wie man eine Ansicht erweitert. Ich habe ein einfaches "item" Modell und Ansicht. Ich würde gerne sowohl das Modell als auch die Ansicht zu "specificItem" erweitern. Gibt es eine Möglichkeit, Ereignisse in der erweiterten Ansicht hinzuzufügen, anstatt sie einfach alle zu ersetzen?

Item Ansicht:

var itemView = Backbone.View.extend({
   ...
   events: {
      "click" : "foo"
      , "dblclick div": "bar"
   }
   ...
});

Spezifische Item Ansicht:

var specificItemView = itemView.extend({
   ...
   // Ich möchte einfach einen Ereignisbehandler hinzufügen, anstatt die oben definierten zu ersetzen
   events: {
      "contextmenu" : "baz"
   }
   ...
});

Wird die Erweiterung von Ansichten auf diese Weise überhaupt unterstützt oder können wir das nur bei Modellen tun?

7voto

topek Punkte 17981

Wenn ich mich nicht irre, funktioniert extend nicht rekursiv, aber du kannst es selbst machen. Ich denke, etwas in dieser Art sollte funktionieren:

var specificItemView = itemView.extend({
   ...
   // Ich möchte einfach einen Ereignishandler hinzufügen, nicht die oben definierten ersetzen
   events: _.extend({
      "contextmenu" : "baz"
   }, itemView.prototype.events),
   ...
});

Hier ist der Beweis, dass extend nicht rekursiv verschmolzen wird

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X