Backbone-Klickereignis, das nicht auf dynamische Ansicht ausgelöst wird

8

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%     
Drew Bartlett 28.08.2013, 00:26
quelle

4 Antworten

7

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.

%Vor%

Über die Verwendung von this.delegateEvents() sollten Sie diese Funktion aufrufen, nachdem Ihre Ansicht bereits in DOM ist, sonst macht es keinen Sinn. zB:

%Vor%

delegateEvents() macht Ihre View-Ereignisse wieder lebendig.

    
dombesz 28.08.2013, 09:42
quelle
12

Probieren Sie this.delegateEvents() aus, nachdem Sie den neuen Inhalt gerendert haben.

    
kikuchiyo 28.08.2013 00:31
quelle
1

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()

    
Vitaliy Trush 23.10.2014 08:56
quelle
0

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.

    
Aravinda VP 23.11.2014 11:21
quelle

Tags und Links