如何从在AngularJS中ui-grid中显示的按钮调用作用域方法

5
我想创建一个带有链接并在 ng-click 上调用 $scope 方法的自定义列。 对于 ngGrid,有一个非常类似的问题( 如何从在 Angular js 中显示的按钮中调用作用域方法 ),该解决方案有效。 我正在使用 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

2个回答

4

1
是的,你只需要在你的模板中加入:ng-click="grid.appScope.your_function(row.entity.your_variable)" - hugsbrugs

3

你应该使用 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

这个不再起作用了。请查看Himen的答案。 - Victor Ionescu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接