Kendo と Angularを一緒に使用している人のために、これが私のために働いた解決策です:
アイデアはk-rebind ディレクティブを使用することです。ドキュメントから:
オプション変更時のウィジェットの更新
コントローラーからウィジェットを更新できます。特殊な k-rebind 属性を使用して、スコープ変数が変更されたときに自動的に更新されるウィジェットを作成します。このオプションは元のウィジェットを破棄し、変更されたオプションを使用して再作成します。
通常のように GridOptions で列の配列を設定する以外に、それへの参照を保持する必要があります。
vm.gridOptions = { ... };
vm.gridColumns = [{...}, ... ,{...}];
vm.gridOptions.columns = vm.gridColumns;
次に、その変数を k-rebind ディレクティブに渡します。
<div kendo-grid="vm.grid" options="vm.gridOptions" k-rebind="vm.gridColumns">
</div>
グリッドをリモート データ (私の場合は OData) にバインドしているときは、これで終わりです。これで、列の配列に対して要素を追加または削除できます。グリッドは、データが再作成された後、再度クエリを実行します。
Grid をローカル データ (オブジェクトのローカル配列) にバインドする場合、ウィジェットが再作成されるまでデータのバインドを延期する必要があります。私にとってうまくいったのは(おそらくこれに対するよりクリーンな解決策があるかもしれません)、 $timeout サービスを使用することです:
vm.gridColumns.push({ ... });
vm.$timeout(function () {
vm.gridOptions.dataSource.data(vm.myArrayOfObjects);
}, 0);
これは、AngularJS v1.5.0 および Kendo UI v2016.1.226 を使用してテストされています。