Я попытался написать фабричный метод в угловых 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', function ($ scope, $ http, $ friendsFactory) { $ scope.deleteUser = function (idUser) { friendsFactory.delete (idUser, $ scope); }}]) 'и получил ошибку:' Ошибка: [$ injector: unpr] FriendsController' – Sahe
Вы вводите 'FriendsFactory' неверный случай. Измените его как: '.controller ('FriendsController', ['$ scope', '$ http', 'FriendsFactory', function ($ scope, $ http, friendsFactory) {$ scope.deleteUser = function (idUser) {friendsFactory. delete (idUser, $ scope);}}]) ' –
Я также изменил ответ с помощью фиксированной инъекции зависимостей. Название фабрики или любого сервиса должно быть точно таким же, как указано в заводском наименовании. Таким образом, вы определили 'friendsFactory' вместо' FriendsFactory' (случай верблюда). –