Mit dem unteren Code wird die Eingabe # p_in mit der Änderung der Eingabe # s_in aktualisiert. Aber ich habe cleanNode (sec) benutzt. Kann jemand helfen zu verstehen, warum die Bindung nicht geklärt ist?Kann cleanNode() verwendet werden, um die Bindung zu bereinigen?
<input id="p_in" data-bind="value: name"></input>
<input id="s_in" data-bind="value: name"></input>
<input id="cb" type="checkbox">same</input>
<script type="text/javascript">
function AddrDataSet (name) {
this.name = ko.observable(name);
};
var primary_set = new AddrDataSet('p');
var sec_set = new AddrDataSet('s');
var pri = $('#p_in')[0];
var sec = $('#s_in')[0];
ko.applyBindings(primary_set, pri);
ko.applyBindings(sec_set, sec);
ko.cleanNode(sec); // clean it
ko.applyBindings(primary_set, sec); // bind it to primary_set
ko.cleanNode(sec); // clean it again
</script>
cleanNode ist wirklich eine interne API. Es gibt derzeit keine Dokumente speziell dafür. –
@RPNiemeyer könnten Sie erarbeiten, wie "mit" Schlüsselwort dieses Problem lösen könnte? Ich bin in einer ähnlichen Situation, und ein sub-modales Fenster ist geöffnet/geschlossen und ich muss vermeiden, Bindungen mehrfach zu nennen. –
Der eine legitime Anwendungsfall, den ich gefunden habe, ist, wenn man Bindungen oder Bestandteile prüft. Meine afterEach-Funktion bereinigt das Element, das die Testkonfiguration für die Bindung enthält, und führt cleanNode darauf aus, damit KO es vergisst. Dann kann ich den nächsten vor jedem starten und die Bindung für den Test erneut einrichten. Auf diese Weise habe ich Tests vollständig gekapselt. –