我將kendo庫升級到2014Q1框架,它有一些很好的功能,他們正在添加,但是當我這樣做時,它打破了任何部件(網格,tabStrip,選擇列表等)從渲染。我追蹤到佈局/視圖不能在沒有被setTimeout設置爲0的情況下封裝的情況下激活widget。我是否在這裏丟失了某些關鍵字,或者我是否以無效的方式構建了這個東西?Kendo佈局不渲染小部件沒有setTimeout
我有低於(去掉註釋和它的作品)問題的基本思路:
var router = new kendo.Router();
var mainLayout = new kendo.Layout($('#mainLayout').html());
var view = new kendo.View('sample', {
wrap: false,
model: kendo.observable({}),
init: function() {
// setTimeout(function(){
$("#datepicker").kendoDatePicker();
// }, 0);
}
});
mainLayout.render('#container');
router.route('/', function() {
mainLayout.showIn('#app', view);
});
router.start();
是的,我同意你我運行了一堆測試結果相同,直到上述解決方案之一實現或使用'data-role =「datepicker」',該元素才存在。我喜歡'view.element.find'方法,但是像setTimeout或使用data-role來初始化項目是一個bandaid解決方案,至少當佈局應該像2013年的庫中那樣處理這個問題時:http:// jsfiddle.net/k2PWB/。我會解決這個問題,比如在init的頂部調用super,以確保init設置代碼完全運行。 – JakeTheBraek
@JakeTheBraek同意,這是一個最好的解決方案,除非這是一個有意的突破性改變。我發現另一個奇怪的是,文檔聲稱Layout.ShowIn將觸發kendo.View的'show'事件。所以我試圖在顯示事件中初始化日期選擇器,但它甚至沒有觸發事件。 – gitsitgo
是的,我也認爲它與init方法處於同一級別,拋棄它,無法調用,與你想象的一樣。看起來整個佈局管理器機制充其量只是一個事後考慮。希望當我的公司開始爲完整的許可證付款時,我可以以更正式的方式得到這些問題的答案。我很感激你的幫助,儘管@ gitsitgo總是很高興知道我不會發瘋:) – JakeTheBraek