[英]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.