Knockout-JS-Ereignis für jedes Viewmodel-Domupdate

8

Ich muss jedes Mal, wenn das DOM über Knockout.JS aktualisiert wird, einen Bitcode jquery ausführen. Ich weiß, dass dies mit benutzerdefinierten Bindungen gemacht werden kann, aber das scheint mit einem bestimmten Viewmodel zu tun zu sein, ich möchte es global machen, also wann immer es auf einem Viewmodel passiert, wird es ausgelöst.

Nehmen wir an, ich möchte IMMER einen JQuery-Datumszeiger auf allen Textfeldern mit dem 'Needsdate' der Klasse haben, anstatt dies jedem meiner Ansichtsmodelle hinzuzufügen, es wäre großartig, wenn ich es global machen könnte.

Ist das möglich?

    
RodH257 08.02.2012, 00:52
quelle

2 Antworten

7

Wenn Sie Elemente nicht dynamisch hinzufügen / entfernen, können Sie sie einfach wie gewohnt verkabeln. Wenn Sie jedoch mit dynamischem Inhalt arbeiten (z. B. mit einem observableArray, dessen Elemente geändert werden), haben Sie mehrere Optionen:

1- Wie bei der Antwort hier können Sie eine benutzerdefinierte Bindung erstellen . Wenn Sie den Wert nicht an eine Eigenschaft in Ihrem Ansichtsmodell binden möchten, können Sie die Bindung beispielsweise vereinfachen:

%Vor%

Sie würden es auf ein Element wie:

setzen

<input data-bind="datepicker: { minDate: new Date() }" />

2- Die andere Möglichkeit besteht darin, die afterRender Funktionalität von template ( und foreach , das template verwendet), um deine Datepicker zu verbinden, nachdem neuer Inhalt gerendert wurde.

    
RP Niemeyer 08.02.2012, 14:15
quelle
0

Ich habe eine Funktion refreshJQuery() erstellt, die alle meine bulligen Verhaltensweisen auf einmal anwendet. Ich rufe diese Funktion dann auf, wenn ich Observables in meinem View-Modell abonniere, um mein Modell zu aktualisieren. Und einmal auf der Seite laden.

%Vor%

Ich benutze es dann wie folgt, obwohl ich zwei andere Observablen identifiziert habe, von denen ich diese Funktion aufrufen muss:

%Vor%

Ich habe auch @ RPNiemeyers Lösung für JQuery-Subskriptionen auf Feldebene implementiert, daher habe ich neben seinem Beispiel für einen Datepicker ähnlichen Code, der $.button() auf <a> -Tags anwendet, und einen anderen, der Checkboxen in iPhone-Style-Switches umwandelt .

    
Dead.Rabit 11.06.2013 11:50
quelle

Tags und Links