目前我的Kendo网格的分页/过滤出现问题。我的网格非常标准,6列4,从字面上只是吐出模型的数据,2显示来自模型的数据,但有一个Kendo tooltip应用敲除绑定。我遇到的问题是使用工具提示MVVM绑定。他们对第一页数据很好,但当你进入第二页或过滤网格时,工具提示不会出现。在分页时对Kendo Grid重新应用Knockout绑定
我已经缩小了这个问题的范围,当绑定应用到页面时,新行的新html不存在。简单的问题重新绑定到新的HTML权利?错误。这是我肯定的解决方案,但我不知道如何完成它作为其生成新的HTML的Kendo,我不能找出一种方法来拦截它,并抓住新的HTML重新申请绑定。
我假设的解决方案将涉及到这样的事情:
self.interceptPaging = function(e) {
var newElements = e.sender.content;
ko.applyBindingsToNode(newElements[0], null, viewModel);
}
但我在哪里得到新的元素来自哪里?现在,e.sender.content会引发两次绑定网格的错误。建议欢迎!
请参阅我的Fiddle了解我的问题的实际示例。
UPDATE:
至于的jsfiddle似乎具有淘汰赛3.2工作的问题,我插到Telerik的道场这样的:Here
更新#2:解决方案
找到了解决办法。在上面的数据绑定函数的顶部,我不得不添加一个自定义绑定处理程序来禁用后代绑定。
ko.bindingHandlers.allowBindings = {
init: function (elem, valueAccessor) {
// Let bindings proceed as normal *only if* my value is false
var shouldAllowBindings = ko.unwrap(valueAccessor());
return { controlsDescendantBindings: !shouldAllowBindings };
}
};
我在kendo grid div中添加了这个属性。
<div data-role="grid"
data-bind="kendoGrid: gridOptions, allowBindings: false "
style="height: 500px">
</div>
我还不得不在上面的applyBindings调用之前调用ko.cleanNode。所以我的数据绑定功能如下:
self.dataBound = function (e){
var body = e.sender.element.find("tbody")[0];
if (body) {
ko.cleanNode(body);
ko.applyBindings(ko.dataFor(body), body);
}
};
查看更新Telerik Dojo。
这真正伟大的作品中的jsfiddle与淘汰赛的2.2版本,但是当我把它变成我的应用程序,它运行淘汰赛的3.2版本,我得到一个“不能多次申请绑定同一个元素”错误。我在2.2中淘汰了淘汰赛,因为3.2在小提琴中给我带来了问题。我不得不去Telerik dojo来获取我在淘汰赛3.2中遇到的情况。 http://dojo.telerik.com/Ikil 有什么建议吗?一直试图找出这一个出来。 – Icestorm0141 2014-12-03 19:47:49
找到解决方案。在上面的数据绑定函数的顶部,我不得不添加一个自定义绑定处理程序来禁用后代绑定。我将这个属性添加到kendo网格div中。在上面的applyBindings调用之前,我还必须调用ko.cleanNode。查看更新的Telerik Dojo。 http://dojo.telerik.com/Ikil/2 – Icestorm0141 2014-12-04 20:18:01
这真的很好知道。感谢您的更新,并很高兴您对它进行了整理。 – 2014-12-04 21:04:59