Angularjs 如何将服务注入gridApi事件?
我的控制器中有一个ng资源服务(我们称之为项): 要使用myItems服务发出POST请求以保存编辑:Angularjs 如何将服务注入gridApi事件?,angularjs,angular-ui-grid,angularjs-resource,Angularjs,Angular Ui Grid,Angularjs Resource,我的控制器中有一个ng资源服务(我们称之为项): 要使用myItems服务发出POST请求以保存编辑: $scope.items_grid.onRegisterApi = function(gridApi, Items) { $scope.gridApi = gridApi; gridApi.edit.on.afterCellEdit($scope, function(rowEntity, colDef, newValue, oldValue) {
$scope.items_grid.onRegisterApi = function(gridApi, Items) {
$scope.gridApi = gridApi;
gridApi.edit.on.afterCellEdit($scope, function(rowEntity, colDef, newValue, oldValue) {
$scope.$apply();
var field = colDef['name'];
Items.get({'id':rowEntity._id.$oid}, function(item) {
item[field] = newValue;
item.$save;
});
});
};
但在控制台上,我得到了TypeError:无法读取未定义的属性“get”
如何在afterCellEdit事件上正确注入我的服务?您会遇到此错误,因为
onRegisterApi
函数不支持依赖注入,并且项
等于未定义的
或其他内容(请尝试在控制台中记录它)
您可以使用$injector
检索依赖项,或者将它们声明为函数参数,但是,仅在实现IoC的情况下
如果您无法访问其中任何一个,至少可以这样做:
var Items=angular.element(document.body).injector().get('Items')代码>
请发布完整的控制器脚本,以获得更优雅的答案。您应该将项注入控制器,而不是将其作为函数参数传递
依赖项是从控制器函数中注入的,而不是从函数参数中注入的。基本上,您需要将项
服务依赖项注入到$scope.Items\u grid.onRegisterApi
所属的angular控制器
中
控制器
app.controller('myCtrl', function($scope, Items){ //<--inject items dependency here
//you controller code
$scope.items_grid.onRegisterApi = function(gridApi) { //<-- removed Items from here
$scope.gridApi = gridApi;
gridApi.edit.on.afterCellEdit($scope, function(rowEntity, colDef, newValue, oldValue) {
$scope.$apply();
var field = colDef['name'];
Items.get({'id':rowEntity._id.$oid}, function(item) {
item[field] = newValue;
item.$save; //this line seems doubtful
});
});
};
})
app.controller('myCtrl',函数($scope,Items){/@paulserikov它有帮助吗?
app.controller('myCtrl', function($scope, Items){ //<--inject items dependency here
//you controller code
$scope.items_grid.onRegisterApi = function(gridApi) { //<-- removed Items from here
$scope.gridApi = gridApi;
gridApi.edit.on.afterCellEdit($scope, function(rowEntity, colDef, newValue, oldValue) {
$scope.$apply();
var field = colDef['name'];
Items.get({'id':rowEntity._id.$oid}, function(item) {
item[field] = newValue;
item.$save; //this line seems doubtful
});
});
};
})