Ich habe eine Backbone-Ansicht, die für jedes übergebene Modell ein neues div erstellt. Ich kann jedoch keine Ereignisse auslösen (klicken Sie auf a.change-status), und ich nehme an, dass dies darauf zurückzuführen ist, dass die darin enthaltenen Elemente ebenfalls aus einer Vorlage generiert werden. Bitte lassen Sie mich wissen, ob es einen Weg gibt.
%Vor%Eine Beispielvorlage würde wie folgt aussehen:
%Vor%Es gibt einige Dinge, die die Ursache des Problems sein könnten.
Zunächst scheint Ihre el
-Deklaration verdächtig zu sein. Wenn Sie ein div mit dieser Klasse möchten, müssen Sie nur das Attribut className
definieren, da der Standard für Backbone-Ansichten div
ist.
Anstelle von: el: '<div class="vendor-video" />'
verwende einfach: className: 'vendor-video'
Ich sehe keine Details zu den Methoden zur Initialisierung Ihrer Ansicht, aber die beste Vorgehensweise besteht darin, eine Ansicht zu initialisieren und sie dann in den Container zu rendern:
%Vor% Um auch die letzte Zeile zu erhalten, müssen Sie return this;
für Ihre Rendermethode verwenden.
Über die Verwendung von this.delegateEvents()
sollten Sie diese Funktion aufrufen, nachdem Ihre Ansicht bereits in DOM
ist, sonst macht es keinen Sinn. zB:
delegateEvents()
macht Ihre View-Ereignisse wieder lebendig.
Ich hatte ein ähnliches Problem.
Sie können dieses Problem in zwei Schritten beheben.
- Erstellen Sie ein tagName
im View
- Hängen Sie Ihre Vorlage in this.$el
an
Das ist alles.
Und es funktioniert ohne this.delegateEvents()
Das Problem, das ich mit tagName beobachtet und anhängend mit diesem. $ el ist, ist, dass der Ereignis-Listener das Ereignis für das letzte Element, das mit dem ausgewählten TagName erstellt wurde, nicht anhängen konnte. Das Problem wurde jedoch gelöst, wenn this.delegateEvents () nach dem Anhängen der Elemente an DOM verwendet wurde.
Tags und Links javascript jquery backbone.js