Mat*_*nik 4 kendo-ui angularjs
我正在使用AngularJS版本1.2.27的Kendo UI版本2014.2.716,我使用指令制作了一个网格
<div ng-controller="MyController as ctrl">
<div id="myGrid" kendo-grid k-options="{some options}"></div>
<button ng-click="ctrl.doSomething()"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我读到如果你给网格命名(如:kendo-grid ="myGridOnScope"),你可以这样访问控制器范围中的小部件:
myModule.controller('MyController', function($scope) {
this.doSomething = function() {
console.log($scope.myGridOnScope);
}
}
Run Code Online (Sandbox Code Playgroud)
console.log应该记录一个widget对象,但在我的情况下它是未定义的.我究竟做错了什么?谢谢您的帮助
Mat*_*nik 12
我自己发现了问题,所以如果有人遇到同样的问题,我会发一个答案.如果您在AngularJS中使用controllerAs语法,则不能只写入窗口小部件的名称 - 您必须在其前面加上控制器别名.
看看这个例子:
<div ng-controller="MyController as ctrl">
<div kendo-grid="myGridName"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
这不会为您提供网格对象$scope- 因为您需要添加ctrl前缀:
<div ng-controller="MyController as ctrl">
<div kendo-grid="ctrl.myGridName"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
现在您可以访问控制器中的小部件,如下所示:
angular.module('MyModule',['kendo.directives'])
.controller('MyController', function($scope){
// this gives you the widget object
console.log(this.myGridName);
// however, this doesn't work
console.log($scope.myGridName);
});
Run Code Online (Sandbox Code Playgroud)
我希望通过这篇文章帮助过某人.干杯,
| 归档时间: |
|
| 查看次数: |
3697 次 |
| 最近记录: |