angular.module('harbinger').controller(
'Admin.UserlistController',
function($rootScope, $scope, $location, $http, userService)
{
// etc
$scope.gridOptions = {
// etc ,
enableRowSelection: false,
columnDefs: [
{field: 'userName', displayName: 'Username'},
{field: 'name', displayName: 'Name'},
{field: 'organization', displayName: 'Organization'},
{field: 'title', displayName: 'Title'},
{field: 'dateOfBirth', displayName: 'Date Of Birth'},
{field: 'controls', displayName: '', cellTemplate: '<div id="controls" ><a id="user-edit" onClick="editUser(\'{{row.entity.userName}}\')">Edit</a> | <a id="user-reset" data-ng-click="resetUser(\'{{row.entity.userName}}\')">Reset</a> | <a id="user-unlock">Un-lock</a></div>'}
]
};
用户重置的onclick我必须通过
userService.reset($scope.userData, function( data ) // success
{
// etc
}
我正在使用ngGrid,我试图从ngGrid中显示的按钮调用范围方法。 -
单击我无法执行此功能。 请给我角度js的方式来做到这一点。
答案 0 :(得分:4)
也许这是一个老问题,但我会回答。
ngGrid
创建了一个独立的范围,因此无法通过以下方式进入父范围:
$parent.editUser('')
<div ng-controller="AppCtrl as ctrl"><div ng-grid="options"></div></div>
和ctrl.editUser('')
.
($scope.callback = {}; $scope.callback.editUser = function(){};
- &gt; callback.editUser('')
) ngGrid
在options
的隔离范围内使用您的cell/rowTemplates
,因此您可以执行以下操作:
Javascript控制器:
$scope.editUser = function(userName) {
...
};
$scope.options = {
data: 'data',
columnDefs: [{
field:'name',
displayName:'name',
cellTemplate: '<div ng-click="options.editUser(\'{{row.entity.userName}}\')">Edit</div>'
}],
editUser: $scope.editUser
}
<强> HTML:强>
<div ng-grid="options"></div>
<强> Plunker:强> Test app