【问题标题】:Kendo Grid: Getting widget instance in AngularKendo Grid:在 Angular 中获取小部件实例
【发布时间】:2015-04-11 10:10:56
【问题描述】:

我试图在我的 Angular 控制器中获取 Kendo 网格的实例,所以我可以尝试连接一些事件(和调用方法)我知道这可能不是最佳实践(并且可能应该使用自定义指令),但是根据documentation,我们应该可以使用...

<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?

提前感谢您的帮助

彼得

【问题讨论】:

    标签: jquery angularjs kendo-ui telerik kendo-grid


    【解决方案1】:

    两个问题:

    1. 如果你使用“controller as”语法,你需要为你想要访问的东西添加前缀(在你的情况下,你需要kendo-grid="vm.grid"而不是kendo-grid="grid"
    2. 当您的控制器被实例化时,Kendo UI 小部件还不存在(类似问题here),因此您需要使用全局 Kendo 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)

    【讨论】:

    • 再次感谢拉斯!你对这个网格和/与 Angular 的了解令人印象深刻。我的最后一块难题是在指令中得到这个。我认为这将是相同的方式,但还没有完全明白。我想既然这是一个扩展,我应该使用另一个帖子(stackoverflow.com/questions/28470493/…)。再次感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多