我想创建一个带有链接的自定义列,并在ng-click上调用$ scope方法。
ngGrid(How to call a scope method from a button displayed in ngGrid -in 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

最佳答案

您应该使用external-scopes属性声明要在单元格模板中使用的external scope:

<div ui-grid="gridOptions" class="grid" external-scopes="gridScope"></div>

然后,在 Controller 中,您需要定义以下范围对象:
$scope.gridScope = {
    editUser: function() {
        alert('It works!');
    }
}

最后,您可以使用以下方式在模板中访问此外部范围
cellTemplate: '<div ng-click="getExternalScopes().editUser()">Edit</div>'

演示:http://plnkr.co/edit/saYe6sddbcO76o9qBrNu?p=preview

关于javascript - 如何从ui-grid中显示的按钮调用范围方法-在Angular JS中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27628706/

10-11 23:34
查看更多