簡體   English   中英

Kendo UI Tabstrip MVC-.data(“ kendoTabStrip”)最初未定義

[英]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幫助器,則需要確保上面的代碼(獲取小部件實例)在從幫助器插入腳本標記之后發生。

幫助程序將腳本標記插入到頁面中,該標記在文檔就緒狀態下運行代碼。 由於每個准備就緒的文檔處理程序均按綁定的順序觸發,因此需要確保您的代碼為:

  1. 在它自己的$(document).ready()函數內部
  2. 您的$(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM