Кендо Гантт: подключение шаблона задачи к MVVM
Я искал способ, каким бы хакерским он ни был, соединить шаблон задачи диаграммы Ганта с ObservableObject, чтобы воспользоваться преимуществами системы MVVM. Я знаю, что шаблон редактирования поддерживает это из коробки, однако я изо всех сил пытался заставить его работать с шаблоном задачи.
Благодаря Джошу Истберну и его скрипке я обнаружил, что шаблон детализации в сетке кендо может быть связан с MVVM через функцию перехвата detailInit
,
$("#a-kendo-grid").kendoGrid({
detailTemplate: kendo.template( $("#detail-template").html() ),
detailInit: function(e) {
kendo.bind(e.detailRow, e.data); // this line produces the binding
}
})
Я попытался с оптимизмом изменить имена параметров, чтобы они ссылались на задачу, а не на подробный шаблон при создании экземпляра Kendo Gantt, но, похоже, он не был реализован.
Кто-нибудь сталкивался с другим приемом, чтобы связать шаблон задачи диаграммы Ганта с MVVM?
1 ответ
Я связывался с Telerik Support. Они заявляют, что не планировали реализовать соединение MVVM между Задачей Ганта и его представителем шаблона задачи в интерфейсе временной шкалы.
Однако я нашел хакерский способ создания привязки MVVM:
HTML
<div id="gantt"></div>
<script id="task-template" type="text/x-kendo-template">
<div>
<div>
<span data-bind="text: title"></span>
</div>
</script>
JavaScript
$("#gantt").kendoGantt({
dataSource: dataSource,
taskTemplate: $("#task-template").html(),
dataBound: function(e) {
var htmlElement = null;
e.sender.dataSource.taskTree().forEach(function( taskObject ){
htmlElement = $(".k-task[data-uid="+taskObject.uid+"]");
if( htmlElement.find("[data-bind]").get(0).kendoBindingTarget === undefined ){
// bind unless previously bound
kendo.bind( htmlElement, taskObject );
}
});
}
});
Этот фрагмент будет привязывать визуализированные элементы шаблона задачи в DOM к репрезентативному объекту задачи после привязки диаграммы Ганта к новым данным. Это событие срабатывает, например, после первой загрузки данных, и каждый раз, когда пользователи сохраняют изменения в задачах Ганта.