Knockout JS 增加、去除、修改绑定

Knockuot JS 似乎只考虑过怎么绑定(ko.applyBindings()),却没考虑过怎么去除绑定,当修改了DOM内容,需要重新绑定时,发现似乎无能为力。

一、解决办法

这里有一个重新绑定的方法,就是使用ko.cleanNode(),然后再使用ko.applyBindings()重新绑定就可以了。

1、VIEW模型

3、更改绑定

你叫啥?
我问的是别名!
2、VIEW-MODEL

二、问题

1、但是据说这样可能存在问题,问题之一是与DOM相关的事件绑定是没法去除的。

这里提供一个外国哥们使用的方法:

这个方法使用jQuery方法在取消绑定前,去除绑定的事件,然后再清除缓存的绑定配置,同时具有一定的通用性。

但这个方法应只对jQuery的事件绑定有效,如果使用其他方式绑定的事件,可能去除不彻底。

2、建议尽量使用if或with绑定来控制,使用下面的形式来操作,灵活性肯定不如直接使用Javascript操作方便。

\
         ...
\


三、增加和移除绑定

增加绑定即动态增加一个DOM节点,然后再绑定该DOM节点。移除绑定即将DOM节点原有的绑定给去除,不让绑定操作再生效。

1、增加绑定

VIEW模型:

1、动态添加绑定


VM模型:





2、去除绑定

VIEW模型:

2、移除绑定


VM模型:




说明:此例参照了网上一位兄弟的示例,其思路比较清晰,但其提供的示例并没有真正解决多次绑定的问题,向这位兄弟表示感谢。

参考:

1、How to clear/remove observable bindings in Knockout.js?

2、knockout动态添加、移除绑定

你可能感兴趣的:(JavaScript)