0

私は、MVVM システムを利用するために、ガント ダイアグラムのタスク テンプレートを ObservableObject に接続するためのハックな方法を探していました。編集テンプレートがすぐに使用できることは承知していますが、タスク テンプレートでも機能させるのに苦労しています。

Josh Eastburn と彼のフィドルのおかげで、Kendo Grid の詳細テンプレートをフック関数を介して 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にバインドする別のハック/トリックに出くわした人はいますか?

4

1 に答える 1

0

Telerik サポートと連絡を取り合っています。彼らは、ガント タスクとその代表的なタイムライン インターフェイスのタスク テンプレートとの間に 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 のタスク テンプレート要素をその代表的な Task オブジェクトにフックします。このイベントは、たとえば、データの最初の読み込みを投稿し、ユーザーがガント タスクに変更を保存するたびにトリガーされます。

于 2016-07-06T06:50:47.673 に答える