代码:
var orderDetailsTabStrip = $('#OrderDetailsTabs').data("kendoTabStrip");
orderDetailsTabStrip.select(tabIndexToSelect);
在doc ready期间尝试引用kendo ui tabstrip时遇到问题,或者我只是将调用放在页面底部的脚本块中。我收到一个错误:
Cannot call method 'select' of undefined
如果我在setTimeout中使用此代码将函数的调用包装在任何时间> = 500ms,它就可以工作。所以似乎问题是在我引用标签之前,有些Kendo函数需要在页面加载期间先完成?
这有效:
setTimeout(function () { selectOrderDetailTab() }, 500);
我不喜欢这个,因为我不确定这需要等待什么,以及500毫秒是否总能正常工作。显然,我可以推迟更高的延迟,以确保它始终有效,但代价是用户的性能降低。是否有某种Kendo事件表明它何时完成它可以用作触发器然后调用我的函数?
答案 0 :(得分:1)
如果您正在使用mvc帮助程序,则需要确保上面的代码(获取窗口小部件实例)发生在从帮助程序插入的脚本标记之后。
帮助程序将脚本标记插入到在文档就绪上运行代码的页面中。由于每个文档就绪处理程序按照绑定的顺序触发,因此您需要确保代码为:
$(document).ready()
函数$(document).ready()
函数在kendo生成一个实际上这通常意味着您需要在body
标记之后运行代码,除非您使用.Deferred()
帮助程序选项,在这种情况下需要在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>