Wie entferne ich eine Backbone.View und lege sie wieder an, ohne Ereignisse zu lösen?

8

Ich habe ein Backbone-System, das aus verschachtelten Unteransichten besteht, in denen ich gelegentlich folgendes tun muss:

  1. Trennen Sie eine untergeordnete Ansicht vom DOM
  2. Erneutes Rendern der übergeordneten Ansicht von Grund auf (aus einer Vorlage)
  3. Hängen Sie die untergeordnete Ansicht erneut an die richtige an Ort

Ich mache das, indem ich etwas wie $(parent.el).html(...) und dann $(parent.el).append(child.el)

aufruft

Was ich bei dieser Technik immer gesehen habe, ist, dass die Ereignisbehandlungsroutinen des Kindes verloren gegangen sind. Also habe ich eine Reihe von Dingen ausprobiert, von denen bisher noch keiner funktioniert hat.

  1. Entfernen Sie zuerst child.el mit $.detach()
  2. Klonen des Knotens child.el und erneutes Verbinden des Klons
  3. child.delegateEvents () wird nach dem erneuten Anfügen von
  4. erneut aufgerufen

Das Einzige, was mir hilft, ist, die Kindansicht komplett neu aufzubauen. Hat jemand irgendwelche Ideen? Das erneute Anfügen des vorhandenen Knotens wäre viel effizienter.

Danke!

    
maxl0rd 01.12.2011, 15:02
quelle

3 Antworten

3

Ich hatte gerade ein ähnliches Problem. Dies schien für mich zu funktionieren:

%Vor%

Ich bin mir immer noch nicht ganz sicher, warum die Event-Listener verschwinden, obwohl ich bestätigen kann, dass sie tatsächlich verschwunden sind, wenn ich im Chrome-Entwicklerwerkzeugfenster nachschaue. Es ist seltsam, weil Roatin Marth ein Beispiel hat ( Ссылка ) wo dieses Problem nicht auftritt.

    
Tom Dalling 10.01.2013 07:39
quelle
1

Ich mache genau das gleiche.

%Vor%     
Another84 12.11.2015 15:38
quelle
-2

Was du versuchst zu tun, scheint Backbone hack-ish zu sein. Sie sollten die native Funktionalität besser nutzen, indem Sie die Ereignisdelegierung und das Rendern von Ansichten einrichten, anstatt sie zu lösen, zu klonen, zu ändern oder neu anzuhängen. Sie erhalten keine Leistungssteigerung, wenn Sie es tun.

Es wäre viel einfacher zu helfen, wenn Sie erklären würden, warum Sie es so machen müssen und warum die native Backbone-Methode nicht für Sie funktioniert.

    
mvbl fst 27.06.2012 16:04
quelle

Tags und Links