Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 剑道网格:以角度获取小部件实例_Jquery_Angularjs_Kendo Ui_Telerik_Kendo Grid - Fatal编程技术网

Jquery 剑道网格:以角度获取小部件实例

Jquery 剑道网格:以角度获取小部件实例,jquery,angularjs,kendo-ui,telerik,kendo-grid,Jquery,Angularjs,Kendo Ui,Telerik,Kendo Grid,我试图在我的Angular Controller中获得剑道网格的实例,这样我就可以尝试连接到一些事件(和调用方法)我知道这可能不是最佳实践(可能应该使用自定义指令),但根据,我们应该能够使用 <div ng-app="app" ng-controller="MyCtrl"> <input kendo-datepicker="datePicker" k-on-change="onChange()"> </div> <script> angular.

我试图在我的Angular Controller中获得剑道网格的实例,这样我就可以尝试连接到一些事件(和调用方法)我知道这可能不是最佳实践(可能应该使用自定义指令),但根据,我们应该能够使用

<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());
};
可以看出

但是,gridInstance始终是未定义的。是否有人知道我是否应该能够使用网格执行此操作,如果是,为什么上面的内容总是返回未定义

提前谢谢你的帮助

彼得

两个问题:

  • 如果使用“controller as”语法,则需要为要访问的内容添加前缀(在您的情况下,需要
    kendo grid=“vm.grid”
    而不是
    kendo grid=“grid”
  • 当你的控制器被实例化时,剑道UI小部件还不存在(类似的问题),所以你需要使用一个全局剑道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>
    

    ()

    再次感谢你,Lars!你对这个网格和/或Angular的知识令人印象深刻。我的最后一个难题是在指令中得到这个。我想这也是同样的方法,但还没有完全理解。我想既然这是一个扩展,我应该使用另一个帖子()。再次感谢你在这里的帮助
      angular
        .module("mygrid")
        .controller("Grid", ['$scope', Grid]);
    
        function Grid($scope) {             
          var gridInstance = $scope.grid;
          ...
    
    <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";
            });
        }
    })();