Con il codice sottostante, l'input # p_in verrà aggiornato con il cambio di input # s_in. Ma ho usato cleanNode (sec). Qualcuno potrebbe aiutare a capire perché l'associazione non è stata chiarita.È possibile utilizzare cleanNode() per pulire l'associazione?
<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 è davvero un'API interna. Al momento non ci sono documenti specifici. –
@RPNiemeyer potresti elaborare come la parola chiave "with" potrebbe risolvere questo problema? Mi trovo in una situazione simile e una finestra sub-modale è aperta/chiusa e ho bisogno di evitare di chiamare i bind di applicazione più volte. –
L'unico caso di utilizzo legittimo che ho trovato è quando collaudo i collegamenti o i componenti. La mia funzione afterEach pulisce l'elemento contenente l'impostazione di test per l'associazione, quindi esegue cleanNode su di esso per far sì che KO lo dimentichi. Quindi posso iniziare il prossimo prima di ogni altro, impostando di nuovo l'associazione per il test. In questo modo ho test completamente incapsulati. –