我试着写工厂方法在角JS:如何从Factory Angular JS访问全局变量?
.factory('FriendsFactory', function(){
var friend = {};
friend.delete = function(id) {
notificationsModal.show('danger', messages_info[86]);
notificationsModal.confirm(function() {
this.deleteAjax(event, id, type);
})
}
friend.deleteAjax = function (event, id, type){
var target = angular.element(event.target);
var request = $http({
method: "POST",
url: "/subscribe/deletesubscriber",
data: $.param({ id : id, type : type }),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
request.success(function() {
target.closest('.notif-item').remove();
$scope.counter--;
});
request.error(function() {
// TODO
});
}
return friend;
})
此代码有两种方法:friend.delete()
也friend.deleteAjax()
调用函数从厂:
.controller('FriendsController', ['$scope','$http', 'friendsFactory', function($scope, $http) {
$scope.deleteUser = function (idUser) {
friendsFactory.delete(idUser);
}
}])
我需要递减变量$scope.counter
在friend.deleteAjax()
ajax响应,无论从控制器被称为工厂。 我可以在每个控制器做重复:
$scope.counter = 10;
和呼叫后出厂,但它不是好
感谢。我试过:'.controller('FriendsController',['$ scope','$ http','friendsFactory',函数($ scope,$ http,$ friendsFactory){ $ scope.deleteUser = function(idUser){ friendsFactory.delete(idUser,$ scope); }}])'并得到错误:'错误:[$ injector:unpr] FriendsController' – Sahe 2015-04-05 10:04:41
您正在注入错误大小写的'FriendsFactory'。将它改为:'.controller('FriendsController',['$ scope','$ http','FriendsFactory',function($ scope,$ http,friendsFactory){$ scope.deleteUser = function(idUser){friendsFactory。删除(idUser,$ scope);}}])' – 2015-04-05 10:43:43
我也修改了固定依赖注入的答案。工厂或任何服务的名称需要与工厂名称中定义的名称完全相同。所以你已经定义了'friendsFactory'而不是'FriendsFactory'(camel case)。 – 2015-04-05 10:46:46