Kendo 网格:在 Angular 指令中获取实例
Kendo Grid: getting an instance in a Angular directive
这直接来自 (还有一个问题,因此我认为应该是一个新的 post?)
上面的link显示了如何在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。
我不想在控制器中获取实例,而是想通过指令获取它(据我所知,这是进行事件处理等的更好位置)
我已经在那里尝试了一些东西,但一直无法获得网格实例,所以这里的任何进一步帮助都会很好。
提前致谢!
基本上你做同样的事情;您需要等待 kendoRendered
事件,例如像这样(请注意,此示例可能不符合 angular 最佳实践(重新隔离范围等)):
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)
这直接来自
上面的link显示了如何在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。
我不想在控制器中获取实例,而是想通过指令获取它(据我所知,这是进行事件处理等的更好位置)
我已经在那里尝试了一些东西,但一直无法获得网格实例,所以这里的任何进一步帮助都会很好。
提前致谢!
基本上你做同样的事情;您需要等待 kendoRendered
事件,例如像这样(请注意,此示例可能不符合 angular 最佳实践(重新隔离范围等)):
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)