相关疑难解决方法(0)

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

使用下面的代码,输入#p_in将随输入#s_in的更改而更新.但我使用了cleanNode(秒).任何人都可以帮助理解绑定未清除的原因.

    <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>
Run Code Online (Sandbox Code Playgroud)

knockout.js

15
推荐指数
1
解决办法
4万
查看次数

Knockout.js绑定在Ajax驱动的页面上

真的开始享受KnockoutJs(http://knockoutjs.com).我的大多数网络应用都是ajax驱动的.加载整个站点,然后从链接到链接我们只需通过ajax调用更改正文内容.

当ajax返回新的body内容时,我可以执行我的Knockout绑定.没问题.当我链接到下一页(只是一个更换身体的ajax调用).我认为Knockout建筑物仍然在记忆中,但由于dom已经改变,因此并没有真正受到限制.关于这个主题的一些问题.

  1. 如果下一页上没有任何Knockout,那么将淘汰对象留在内存中的那种真的很糟糕吗?更好的是有没有办法重置(清除)淘汰对象?

  2. 当我从一个具有敲除绑定的页面转到另一个具有敲除绑定的页面时,只是调用ko.applyBindings()再次清除旧的东西并重新绑定新的东西?(再一次,当我说从一个页面转到另一个页面时,我只是用ajax调用重新加载身体).

  3. 淘汰赛是否有任何"实时"绑定.有点像jQuery的实时绑定?这样就可以预先加载Knockout,然后不必将内容更改重新应用到内容更改.

一般情况下,我正在寻找关于如何在一个应用程序中从页面到页面最佳使用淘汰的建议,其中浏览器不会在页面之间刷新.

在此先感谢您的帮助.

memory-leaks resource-cleanup knockout.js

6
推荐指数
1
解决办法
3031
查看次数