繁体   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