2015-02-11 76 views
5

我試圖在我的Angular Controller中獲得Kendo網格的一個實例,所以我可以嘗試連接一些事件(並調用方法)我知道這可能不是最佳實踐(和應該使用自定義指令),但根據documentation,我們應該能夠使用...Kendo Grid:在Angular中獲取widget實例

<div ng-app="app" ng-controller="MyCtrl"> 
<input kendo-datepicker="datePicker" k-on-change="onChange()"> 
</div> 
<script> 
angular.module("app", [ "kendo.directives" ]).controller("MyCtrl", 
    function($scope) { 
$scope.onChange = function() { 
alert($scope.datePicker.value()); 
}; 

});

所以,我試圖做與網格相同。我有以下的標記......

<div ng-controller="Grid"> 
    <div kendo-grid='grid' k-options="vm.gridOptions"></div> 
</div> 

,然後在控制器JS文件..

angular 
    .module("mygrid") 
    .controller("Grid", ['$scope', Grid]); 

    function Grid($scope) {    
     var gridInstance = $scope.grid; 
     ... 

可以看出here

然而,gridInstance永遠是不確定的。有誰知道我是否應該能夠在網格中做到這一點,如果有的話,爲什麼上述總是返回undefined?

預先感謝任何幫助

彼得

回答

5

兩個問題:

  1. 如果使用「控制器」語法,你需要前綴你想要的東西訪問(在你的例如,您需要kendo-grid="vm.grid"而不是kendo-grid="grid"
  2. 當您的控制器被實例化時,Kendo UI小部件尚不存在(類似問題here),所以您需要等待它使用一個全球性的劍道UI事件

所以你的HTML變爲:

<div data-ng-app="app"> 
    <div data-ng-controller="Grid as vm"> 
     <div kendo-grid="vm.grid" k-options="vm.options"></div> 
     <div>{{vm.msg}}</div> 
    </div> 
</div> 

您的應用程序:

(function() { 
    angular.module("app", ["kendo.directives"]) 
     .controller("Grid", ["$scope", Grid]); 

    function Grid($scope) { 
     var vm = this; 

     var gridData = [{ 
      col1: 'data1', 
      col2: 'data2' 
     }, { 
      col1: 'data1', 
      col2: 'data2' 
     }]; 

     vm.options = { 
      dataSource: gridData, 
      editable: true 
     }; 

     $scope.$on("kendoRendered", function (event) { 
      var gridInstance = vm.grid; 
      console.log(vm); 
      vm.msg = gridInstance === undefined ? "undefined" : "defined"; 
     }); 
    } 
})(); 

updated demo

+0

再次感謝你拉爾斯!你對這個網格和Angular的知識令人印象深刻。我的最後一塊難題是將其置於指令中。我認爲這將是相同的方式,但還沒有完全得到它。我以爲這是一個擴展,我應該使用另一篇文章(http://stackoverflow.com/questions/28470493/kendo-grid-getting-an-instance-in-a-angular-directive)。再次感謝您的幫助 – peterc 2015-02-12 06:10:50

+0

驚人的完美 – 2015-05-14 21:59:53