在Kendo UI Scheduler完成加载后加载JQuery?

时间:2013-12-20 14:28:45

标签: jquery scheduler kendo-asp.net-mvc

Hej书呆子:)

我有一个带有元素的页面 - 一个Dropdownlist和一个kendoUI Scheduler。 类似的东西:

<div class="SchedulerHeader">
    <p> <label>Current View: </label>
      <select id"views">
        <option value="agenda">Agenda</option>
        <option value="day">Day</option>
        <option value="month">Month</option>
        <option value="week">Week</option>
        <option value="workWeek">Work Week</option>
     </select>
   </p>
</div>
 @(Html.Kendo().Scheduler<myNameSpace.viewModel>().Name("myScheduler") #more options#

<script>
$(function() {

    var scheduler = $("#myScheduler").data("kendoScheduler");
    $("#views").kendoDropDownList({
        value: scheduler.view(),
        change: function () {
            scheduler.view(this.value());
        }
    });
});
</script>

我的问题是js在调度程序完成加载之前加载 - 这意味着我的dropdownlist init值dosnt与调度程序的视图值匹配。 我可以通过更改下拉列表中的值来更改调度程序视图,以便绑定正常。 当我在pageload调试时,我看到“value:scheduler.view()”是'null'。

所以我的问题是:我如何确保在调度程序之后加载js,而不使用定时器并且不在js中编写调度程序?

Merry Christimas :)

3 个答案:

答案 0 :(得分:1)

使用回调:

参考:http://www.w3schools.com/jquery/jquery_callback.asp

var scheduler = $("#myScheduler").data("kendoScheduler", function() {
    $("#views").kendoDropDownList({
        value: scheduler.view(),
        change: function () {
            scheduler.view(this.value());
        }
    });
});

答案 1 :(得分:0)

我认为RequireJS可能对您有用(http://requirejs.org/)。

它允许您按特定顺序定义JS文件/插件等等。 我让你看看它,希望它有所帮助。

答案 2 :(得分:0)

谢谢答案。

我对我的问题的解决方案 - 订阅了kendo UI调度程序的数据绑定事件。 看起来像这样,并将dropDownList的值设置为'scheduler.view()。name

<div class="SchedulerHeader">
<p> <label>Current View: </label>
  <select id"views">
    <option value="agenda">Agenda</option>
    <option value="day">Day</option>
    <option value="month">Month</option>
    <option value="week">Week</option>
    <option value="workWeek">Work Week</option>
 </select>
</p>
</div>
@(Html.Kendo().Scheduler<myNameSpace.viewModel>().Name("myScheduler") #more options#
 .Events(events => events.Databound("onLoad"))

<script>
 function onLoad(e){

var scheduler = $("#myScheduler").data("kendoScheduler");
$("#views").kendoDropDownList({
    value: scheduler.view()**.name**,
    change: function () {
        scheduler.view(this.value());
    }
});
})
</script>

感谢您的回答 - 圣诞快乐