我在我的项目中使用了Knockout-kendo.js binding for Kendo Scheduler。我在使用Horizontal Grouping。所以,在这里我用DataSource and well as Resources with group.
为kendo计划程序创建KO绑定处理程序更新/重新分配
我宣布我的变量象下面这样:
monitorData = ko.observableArray(),
schedulerData = ko.observableArray(),
我的激活方法:
activate = function (args) {
getMonitorData();
getschedulerData (08, 09, 2014);
},
我的服务调用的激活方法完成之前正在返回。这里Observable数组应该可以工作。但实际上它没有将数据分配给我的调度程序。即使有可观察数组中的数据。
我的计划代号:
<div class="scheduler">
<div id="scheduler" data-bind="kendoScheduler:
{
date: new Date(),
startTime: new Date('2014/6/13 12:15 AM'),
endTime: new Date('2014/6/13 11:54 PM'),
height: containerHeight,
views: [{ type: 'day', selected: true, majorTick: 15 }], //'week', //'month', //'Agenda'
editable: false,
useKOTemplates: true,
eventTemplate: $('#event-template').html(),
allDaySlot: false,
timezone: 'Etc/UTC',
footer: { command: false },
dataSource: schedulerData(),
group: { resources: ['Monitors'] },
resources: [{ field: 'scheduleId', name: 'Monitors', dataSource: monitorData(), title: 'Monitors' }],
dataBound: function() { $('.k-floatwrap ul li.k-nav-current').hide(); }
}">
</div>
</div>
如果我硬编码数据的变量时,其得到初始化,它得到的工作。所以没有时间间隔,所以数据被分配给调度器。
象下面这样:
processMonitors = processMonitorMapper(monitors), // Functio without service call - returns hard code data
schedulerData = schedulerDataMapper(rawData), // // Functio without service call - returns hard code data
我才知道可观察到的阵列中的数据将不会被剑道调度可以理解,如果其初始数据的初始化后分配。所以我尝试了ko.toJS
。这对我也没有帮助。
为了避免这种问题。我已经尝试了调度程序的ko.bindhandlers
。
代码:
ko.bindingHandlers.kendoScheduler = {
init: function (element) {
var sch = $(element).data("kendoScheduler");
console.log("Scheduler Initiated");
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
//var scheduler = $(element).data("kendoScheduler");
//if (scheduler != null) {
//if (value.dataSource != null && value.dataSource.length > 0 && value.resources[0] != null && value.resources[0].dataSource.length > 0) {
// $(element).kendoScheduler({ dataSource: value.dataSource, resources: value.resources });
//}
var dataSource = new kendo.data.SchedulerDataSource({
data: value
});
$(element).data("kendoScheduler").setDataSource(dataSource)
//}
console.log("Scheduler Updated");
}
};
但问题是,上面的代码也无法正常工作。请帮我解决上述问题。
附加信息:另外我需要更改调度程序的数据源&,每一天都是明智的。日期将通过kendo日历选择。我需要每天致电服务选择明智。因此,新的数据源需要分配到Kendo Scheduler.
如何动态分配kendo调度器数据源&资源。如果我分配给可观察阵列,它不工作/没有得到分配,如上所述。
如何为kendoScheduler Update/Init编写ko.bindingHandlers?