如何从 ui-grid 中显示的按钮调用范围方法 - 在 Angular js 中
How to call a scope method from a button displayed in ui-grid - in Angular js
我想创建一个带有链接的自定义列,并在ng单击时调用$scope方法。ngGrid(如何从ngGrid -in Angular js中显示的按钮调用scope方法)也有非常相似的问题,并且该解决方案有效。我正在使用ui-grid,它应该只是ngGrid的较新版本,但它似乎在那里不起作用。
这是我的代码:
var app = angular.module('plunker', ['ui.grid']);
app.controller('MainCtrl', function($scope) {
$scope.gridOptions = {
data: [{name: 'test'}],
columnDefs: [{
field:'name',
displayName:'name',
cellTemplate: '<div ng-click="gridOptions.editUser()">Edit</div>'
}],
editUser: $scope.editUser
};
$scope.editUser = function() {
alert('It works!');
};
});
http://plnkr.co/edit/Q5SuIeAPFpZaUKbmIDCn
以下是适用于ngGrid的原始解决方案:http://plnkr.co/edit/hgTQ1XdEVRyxscoNs76q
在新版本的ui-grid中,这种方法对我不起作用。 相反,我使用了appScope核心API。http://ui-grid.info/docs/#/tutorial/305_appScope
您应该使用 external-scopes
属性声明要在单元格模板中使用的外部作用域:
<div ui-grid="gridOptions" class="grid" external-scopes="gridScope"></div>
然后在控制器中,您需要定义此范围对象:
$scope.gridScope = {
editUser: function() {
alert('It works!');
}
}
最后,您将模板中的外部范围作为
cellTemplate: '<div ng-click="getExternalScopes().editUser()">Edit</div>'
演示:http://plnkr.co/edit/saYe6sddbcO76o9qBrNu?p=preview
相关文章:
- 如何创建一个方法来验证数组的范围
- JavaScript对象范围-在对象方法中使用对象变量
- 如何测试只在闭包范围中可见的javascript方法
- 在 JavaScript 中获取范围的随机数的最佳方法
- Vue.js 在方法内失去范围
- 是否可以对超出范围的 setInterval 变量调用 clearInterval 方法
- 如何在 javascript 中更改方法调用的全局范围
- 在日期范围内查找丢失日期的最有效方法是什么
- 是否有任何方法可以访问外部范围's变量
- 当生成正态分布的随机值时,定义范围的最有效方法是什么
- javascript ES6类/方法范围
- AngularJs,DropZone.Js - 有没有人想出一种方法来将Dropzone传输保留在Angular根范围内
- Javascript 对象方法范围 - 方法失败
- 谷歌地图变量的范围和调用方法
- jQuery插件样板 - 具有绑定范围的私有方法
- 如何从 ui-grid 中显示的按钮调用范围方法 - 在 Angular js 中
- ExpressJS中POST方法上的变量会话的范围
- 如何使用 ExtJS 4 中控制器的控制方法更改范围
- 如何从 ngGrid 中显示的按钮调用范围方法
- 用sinon存根在角控制器构造中调用的范围方法