Kendo Grid:在Angular指令中获取实例

时间:2015-02-12 06:08:55

标签: javascript angularjs kendo-ui kendo-grid

这直接来自this question(另外一个问题因此我认为应该是一个新帖子?)

上面的链接显示了如何在Angular中获取网格实例(感谢Lars)

所以,继最后一个例子之后,我现在添加了以下指令..

<body>    
<div data-ng-app="app">     
<div data-ng-controller="Grid as vm">
        <div id='aa'>
    <div pckendo id='bb' kendo-grid='grid' 
       k-options="vm.options"></div>  
    </div>

 </div>
</div>      
</body> 

并在.js中添加了

angular
.module("app", ["kendo.directives"])
.controller("Grid", Grid)
.directive('pckendo', PCKendo);
....
function PCKendo() {

function link(scope, element, attrs) {
    var instance = element;
    var vm = scope.vm;

    vm.msg = "";
    var grid = scope.grid;

}

return {
    link: link
}

有关完整示例,请参阅here

我不想在控制器中获取实例,而是希望通过指令获取它(从我所理解的这是一个更好的事件处理地点等)

我在那里尝试了一些东西,但是无法获得网格实例,因此这里的任何进一步帮助都会很棒。

提前致谢!

1 个答案:

答案 0 :(得分:2)

基本上你做同样的事情;您需要等待kendoRendered事件,例如像这样(注意这个例子可能不符合角度最佳实践(重新隔离范围等)):

function PCKendo($timeout) {
    function link(scope, element, attrs) {
        scope.$on("kendoRendered", function (e) {
            scope.$apply(function () {
                scope.vm.setMessage("one col");
                scope.grid.hideColumn(1);
            });

            $timeout(function () {
                scope.$apply(function () {
                    scope.vm.setMessage("all cols");
                    scope.grid.showColumn(1);
                });
            }, 2000);
        });
    }

    return {
        link: link
    }
}

demo