Hej nerds :)
У меня есть страница с элементами - Dropdownlist и планировщик kendoUI. что-то вроде:
<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 dosnt соответствует значению вида планировщика. Я могу изменить представление планировщиков, изменив значение в раскрывающемся списке, чтобы привязка была в порядке. Когда я отлаживаю pageload, я вижу, что "значение: scheduler.view()" равно "null".
Поэтому мой вопрос: как я могу убедиться, что js загружен после планировщика, без использования таймеров и без написания планировщика в js?
Счастливого Рождества :)
спасибо для ответа.
Мое решение моей проблемы - было подписано на событие привязки данных планировщика пользовательского интерфейса кендо. которые выглядят так и устанавливают значение 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>
Спасибо за ответы - С Рождеством Христовым
использовать обратный вызов:
Ссылка: 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());
}
});
});
Я думаю, что RequireJS может быть вам полезен (http://requirejs.org/).
Он позволяет вам определять ваши JS файлы/плагины в определенном порядке и многое другое. Я позволил вам взглянуть на него, надеюсь, что это поможет.