Это $scope
внутри ag-grid
(плункер)
Перед вызовом ageCellRendererFunc
function ageCellRendererFunc(params) {
params.$scope.ageClicked = ageClicked;
eturn '<button ng-click="ageClicked(data.age)">Age</button>';
}
инициализируется params
(4012):
RenderedCell.prototype.createParams = function () {
var params = {
node: this.node,
data: this.node.data,
value: this.value,
rowIndex: this.rowIndex,
colDef: this.column.colDef,
$scope: this.scope, // <----
context: this.gridOptionsWrapper.getContext(),
api: this.gridOptionsWrapper.getApi()
};
return params;
};
Таким образом, вы можете использовать controller as
module.controller("exampleCtrl", function($http) {
var vm = self;
/* ... */
}
плунжер с VM
РЕДАКТИРОВАТЬ 1
Это плункер , который использует ag-grid 22.0.0
(добавлено agGrid.initialiseAgGridWithAngular1(angular)
)
Этот код хорош:
function ageCellRendererFunc(params) {
params.$scope.ageClicked = ageClicked;
return '<button ng-click="ageClicked(data.age)">Age</button>';
}
Как вы упомянули, $scope
относится к params
, а не к вашему контроллеру. Ваш контроллер вообще не использует $scope
. Это определение ag-grid. Разработчики могут использовать другую переменную - bob
, и синтаксис будет params.bob.ageClicked = ageClicked;