Кендо Гантт: подключение шаблона задачи к 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 к репрезентативному объекту задачи после привязки диаграммы Ганта к новым данным. Это событие срабатывает, например, после первой загрузки данных, и каждый раз, когда пользователи сохраняют изменения в задачах Ганта.

Другие вопросы по тегам