可以用cleanNode()来清理绑定吗?

用下面的代码,input#p_in将随着input#s_in的改变而更新。 但是我已经使用了cleanNode(sec)。 任何人都可以帮助理解为什么绑定不清除。

<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> 

ko.cleanNode由Knockout在内部使用,用于清理与元素相关的数据/计算结果。 它不会删除通过绑定添加的任何事件处理程序,或者必须了解绑定是否更改了DOM。 这肯定会导致问题,例如当多个处理程序随后再次绑定时,会将其附加到元素上。

所以,我不会推荐使用这种模式。 一个更好的模式是使用或template绑定在一个部分周围,并允许它与新的绑定重新呈现。

必须承认,我有点困惑,因为它适合我 ! 你在看什么,你期望看到什么?

该代码将显示两个input与value p ,这是我所期望的。