Backbone.js Ansichten DelegateEvents werden nicht gebunden (manchmal)

8

Ich verwende Backbone.js und manchmal die Ansichten Veranstaltungen korrekt werden nicht gebunden ist.

Ich kann die Ereignisbindungssituation mit $(viewselector).data() in jQuery überprüfen. Meistens gibt es Ereignisse, manchmal gibt es keine!

Gibt es irgendwelche bekannten Dinge, auf die ich achten sollte, die das verursachen können?

    
FriiSource 26.02.2011, 08:53
quelle

2 Antworten

16

Ereignisse werden an diese.el delegiert, wenn die Ansicht initialisiert wird. Sie müssen also:

  • Erstellen Sie die Ansicht, indem Sie dem Konstruktor die Option "el" geben, um das Element
  • anzugeben
  • Definieren Sie el, tag, id, Klassenname in Ihrer Ansicht, um auf der Seite Ihr Element direkt zu erstellen oder zu finden.
  • Hängen Sie Ihre gerenderte Ansicht an das Element "el" der Ansicht an
  • Stellen Sie sicher, dass Sie das Element "el" nicht nach der Erstellung der Ansicht ersetzen

Wenn Sie das letzte Element verwenden müssen, können Sie delegateEvents noch einmal aufrufen, um das Ereignis für Ihre Ansicht erneut zu delegieren.

    
Julien 18.06.2013, 03:54
quelle
12

Mein Ansatz in diesen Szenarien ist das Hinzufügen von delegateEvents() beim Rendern jeder Ansicht mit einem Ereignis wie dem folgenden:

%Vor%

Dies ist perfekt für Ansichten, die speziell dynamisch erstellt wurden, d. h. Ansichten, die bei jedem Klick als neu deklariert werden ...

    
Varand Pezeshkian 07.03.2012 00:45
quelle