[英]Kendo UI Tabstrip MVC - .data(“kendoTabStrip”) is undefined initially
碼:
var orderDetailsTabStrip = $('#OrderDetailsTabs').data("kendoTabStrip");
orderDetailsTabStrip.select(tabIndexToSelect);
在文檔准備就緒期間嘗試引用kendo ui選項卡時遇到問題,或者我只是將調用放在頁面底部的腳本塊中時遇到問題。 我得到一個錯誤:
Cannot call method 'select' of undefined
如果我在setTimeout中將此代碼的調用包裝在setTimeout中的時間大於等於500ms,那么它將起作用。 看來問題在於,某些Kendo功能需要在頁面加載期間首先完成,然后才能引用該Tabstrip?
這有效:
setTimeout(function () { selectOrderDetailTab() }, 500);
我不喜歡這樣,因為不確定要等待什么以及500ms是否總是可以工作。 顯然,我可以將延遲提高一些,以確保其始終有效,但是會以降低用戶性能為代價。 是否存在某種Kendo事件,該事件指示何時完成它可以用作觸發器然后調用我的函數的事情?
如果使用的是mvc幫助器,則需要確保上面的代碼(獲取小部件實例)在從幫助器插入腳本標記之后發生。
幫助程序將腳本標記插入到頁面中,該標記在文檔就緒狀態下運行代碼。 由於每個准備就緒的文檔處理程序均按綁定的順序觸發,因此需要確保您的代碼為:
$(document).ready()
函數內部 $(document).ready()
函數在劍道生成一個綁定后綁定 實際上,這通常意味着您需要在body
標簽之后運行代碼,除非您使用.Deferred()
helper選項,在這種情況下,它需要在WriteScripts
之后WriteScripts
<body>
//kendo inserts your widget
<div id="#OrderDetailsTabs"></div>
<script>
//this is the equivillent to $(document).ready()
jQuery(function() {
$('#OrderDetailsTabs').kendoTabStrip({ options: "goHere" });
} );
</script>
</body>
<script>
$(document).ready(function(){
var orderDetailsTabStrip = $('#OrderDetailsTabs').data("kendoTabStrip");
orderDetailsTabStrip.select(tabIndexToSelect);
});
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.