gpt4 book ai didi

knockout.js - cleanNode() 可以用来清理绑定(bind)吗?

转载 作者:行者123 更新时间:2023-12-03 15:20:38 25 4
gpt4 key购买 nike

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

    <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 在内部使用它来清理它创建的与元素相关的数据/计算。它不会删除任何由绑定(bind)添加的事件处理程序,也不会理解绑定(bind)是否对 DOM 进行了更改。这肯定会导致问题,例如在随后再次绑定(bind)元素时将多个处理程序附加到元素上。

所以,我不建议使用这种模式。更好的模式是使用 withtemplate围绕一个部分进行绑定(bind),并允许使用新的绑定(bind)重新渲染它。

关于knockout.js - cleanNode() 可以用来清理绑定(bind)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15063794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com