Ich verwende KnockoutJS und habe eine Hauptansicht und ein Ansichtsmodell. Ich möchte, dass ein Dialogfeld (das jQuery-UI) mit einer anderen Ansicht angezeigt wird, an die ein separates untergeordnetes Ansichtsmodell gebunden werden soll.
Der HTML-Code für den Dialoginhalt wird mit AJAX abgerufen, sodass ich nach Abschluss ko.applyBindings
der Anforderung aufrufen und das untergeordnete Ansichtsmodell nur an den Teil des HTML-Codes binden möchte, der über Ajax im Dialogfeld div geladen wurde.
Ist dies tatsächlich möglich oder muss ich ALLE meine Ansichten und Ansichtsmodelle laden, wenn die Seite zum ersten Mal geladen und dann ko.applyBindings
einmal aufgerufen wird?
quelle
ko.cleanNode(document.getElementById("one")
um Dinge zu bereinigen, oderko.removeNode(document.getElementById("one")
um Dinge zu bereinigen und den Knoten aus dem DOM zu entfernen.cleanNode
undremoveNode
nicht Event - Handler entfernen, so etwas Vorsicht walten lassen. In einigen Fällen ist es vorzuziehen, dietemplate
oder diewith
Bindung für diese Bereiche zu verwenden, damit neue Elemente gerendert werden.$(element).unbind();
alle Handler entfernen können.Während Niemeyer Antwort eine richtige Antwort auf die Frage ist, Sie könnten auch Folgendes tun:
Dies bedeutet, dass Sie das DOM-Element nicht angeben müssen und sogar mehrere Modelle wie folgt an dasselbe Element binden können:
quelle
with
nicht billig, siehe: LinkIch habe es geschafft, ein benutzerdefiniertes Modell zur Laufzeit an ein Element zu binden. Der Code ist hier: http://jsfiddle.net/ZiglioNZ/tzD4T/457/
Das Interessante ist, dass ich das Datenbindungsattribut auf ein Element anwende, das ich nicht definiert habe:
quelle
Sie sollten sich die
with
Bindung sowie http://knockoutjs.com/documentation/custom-bindings-controlling-descendant-bindings.html ansehencontrolsDescendantBindings
quelle