目前我的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