2013-04-12 93 views
1

我有一個雙級Kendo UI樹視圖與父節點和子節點。 當我檢查父節點時,會自動檢查所有子節點(包括父節點)。kendo treeview複選框 - 父節點檢查 - 每個複選框更改事件

現在我想發送一個事件與當前樹選擇狀態。 問題是當我嘗試在dataSource.change方法,因爲它分別觸發每個複選框選擇(1個父節點+ 3個子節點= 4個變化事件)。這是代碼的樣子:

treeView.data("kendoTreeView").dataSource.bind("change", function() { 
    alert('event fired!'); 
}); 

我創建了一個工作示例here

是否有其他事件附加到只生一個事件觸發的所有複選框被更新後? 或者,也許有辦法將所有這些「變化」事件分組,然後只發一個?

回答

1

我用這個解決方案結束:

tree.data("kendoTreeView").dataSource.bind("change", function() { 
     treeView = tree.data("kendoTreeView"); 
     checkedNodes = []; 
    checkedNodeIds(treeView.dataSource.view(), checkedNodes); 
    if (!timeoutSet) { 
     setTimeout(fireCheckboxChangeOnce, 50);//fires only one event when parent checkbox checks all the children 
     timeoutSet = true; 
    } 
}); 

只有第一個事件來創建一個函數調用延遲(使用的setTimeout())。 所有剩餘的「更改」事件僅修改checkedNodes參數。

fireCheckboxChangeOnce函數還清除timeoutSet標誌。

+0

謝謝 - 這個工程,但理想情況下,我們應該尋找一個沒有超時的解決方案 – Abhi