2014-12-02 35 views
1

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

回答

1

你是絕對正確的。 Kendo在頁面上引入了新的元素,淘汰賽不知道它需要應用綁定。

您可以利用數據綁定的事件是:

dataBound: function(){ 
    var body = this.element.find("tbody")[0]; 

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

我下面更新您的提琴。

http://jsfiddle.net/oe3nrk8f/2/

而且,看看這個問題,就看你怎麼可以修改劍道敲除庫自動爲您做這個的來源,但可能是矯枉過正。

https://stackoverflow.com/a/13863191/4316646

+0

這真正偉大的作品中的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

+0

找到解決方案。在上面的數據綁定函數的頂部,我不得不添加一個自定義綁定處理程序來禁用後代綁定。我將這個屬性添加到kendo網格div中。在上面的applyBindings調用之前,我還必須調用ko.cleanNode。查看更新的Telerik Dojo。 http://dojo.telerik.com/Ikil/2 – Icestorm0141 2014-12-04 20:18:01

+0

這真的很好知道。感謝您的更新,並很高興您對它進行了整理。 – 2014-12-04 21:04:59