【问题标题】:Kendo Grid: getting an instance in a Angular directiveKendo Grid:在 Angular 指令中获取实例
【发布时间】:2015-02-12 06:08:55
【问题描述】:

这直接来自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

我不想在控制器中获取实例,而是通过指令获取它(据我了解,这是一个更好的地方进行事件处理等)

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

提前致谢!

【问题讨论】:

    标签: javascript angularjs kendo-ui kendo-grid


    【解决方案1】:

    基本上你做同样的事情;您需要等待 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)

    【讨论】:

    • 太棒了,非常感谢!我没有意识到在这里仍然必须“等待”(即在 kendoRendered 上),但它工作得很好。再次感谢大家!我现在开始觉得我可以用这个网格完成我需要做的事情。干杯
    猜你喜欢
    • 2015-04-11
    • 2019-07-06
    • 2017-06-16
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多