1
我正在幫助客戶解決一些KendoUI問題,我們正在使用樹視圖來實現組織層次結構。展開Treeview promise
他們在樹上方有一個搜索框(自動完成),當他們選擇某人時,它展開樹,在樹中找到它們並選擇它們,如果它們不在視圖中(treeview在滾動div
)它將它們滾動到視圖中。
我遇到的問題是,我的scrollTop動畫發生在treeview完成擴展之前。 (我要指出,我打開loadOnDemand
掉在樹上(現在),以加速擴大整個樹expand('.k-item'))
一些代碼:
//in the autocomplete select event handler:
treeView.expand('.k-item');
treeView.select(selectedItem);
var treeTop = treeView.element.offset().top,
elTop = treeView.select().offset().top,
offsetDiff = elTop - treeTop;
treeView.element.animate({scrollTop: offsetDiff}, 100);
如果我超時包裹animate
(約。300密耳),它適用於中等規模的組織,但如果我們有一個大的組織,可能沒有足夠的時間
會是什麼更好的是,如果我能打入一個承諾我想:
treeView.expand('.k-item').promise().done(//animate);
甚至嘗試將expand
換成defer
和promise
的函數,但在樹完全展開之前調用expand
。
我曾嘗試在一個承諾包裹,並沒有爲我工作。雖然沒有擴展樹視圖,因爲樹視圖並沒有真正的遞歸擴展,我自己也是這樣做的。 :0)我會嘗試這個。我最終使用超時,問題是,我不知道樹會有多大(這是一些大公司的組織結構圖)。我使用的超時時間是300,它適用於節點少於1000的樹。謝謝! – leebrandt
如果您可以創建演示,我可以再看看它;如果loadOnDemand爲false,則展開(「.k-item」)應該一次性展開所有內容,不管樹有多大 –