Knockout.js Kendo Knockout:调用一个方法,该方法从网格内具有数据绑定的模板更改viewmodel属性(更新为Knockout 2.3.0)

Knockout.js Kendo Knockout:调用一个方法,该方法从网格内具有数据绑定的模板更改viewmodel属性(更新为Knockout 2.3.0),knockout.js,kendo-ui,Knockout.js,Kendo Ui,我正在使用RPNiemeyer的剑道击倒库,并试图在剑道格中的模板内使用数据绑定。以前的问题有一个刷新绑定的解决方案,但在我更新到knockout.js 2.3.0之后,这个解决方案就不再有效了。现在,knockout.js在对同一元素多次执行ko.applyBindings时引发异常 我也尝试过使用敲除模板和useKOTemplates来实现它,但是通过单击列标题对网格进行排序不再有效 有没有办法解决这个问题,或者我有没有使用kendo MVVM来解决这个问题?对于这个特定的场景,您应该能够在

我正在使用RPNiemeyer的剑道击倒库,并试图在剑道格中的模板内使用数据绑定。以前的问题有一个刷新绑定的解决方案,但在我更新到knockout.js 2.3.0之后,这个解决方案就不再有效了。现在,knockout.js在对同一元素多次执行ko.applyBindings时引发异常

我也尝试过使用敲除模板和useKOTemplates来实现它,但是通过单击列标题对网格进行排序不再有效


有没有办法解决这个问题,或者我有没有使用kendo MVVM来解决这个问题?

对于这个特定的场景,您应该能够在
数据绑定
回调中添加一个
ko.cleanNode
调用。比如:

ko.bindingHandlers.kendoGrid.options.dataBound = function(data) {
    var body = this.element.find("tbody")[0];

    if (body) {
       ko.cleanNode(body);
       ko.applyBindings(ko.dataFor(body), body);   
    }
};

这很有效。非常感谢。不过,我有一点共识,即这种重新应用绑定的方法性能不是很好。我每隔15秒左右就要轮询一次数据。数据量并没有那么大。您认为呢?这种技术并不理想(我希望在库中的某个时候对其进行改进),但在您的场景中,它听起来并不是一个问题。内容被调出,然后反弹。之所以使用
cleanNode
,是因为根节点仍然存在。结果表明,此解决方案会导致内存泄漏,因为ko.cleanNode不会删除事件侦听器。看见