Итак, у меня есть пара контроллеров и сервисов, которые функционируют правильно прямо сейчас, но мой босс хочет, чтобы я переместил блоки успеха/ошибки/окончательно от контроллера к сервису.Угловой JS - получение информации от службы
Контроллер Функция:
$scope.createUserButton = function() {
$scope.isBusy = true;
creationService.makeNewUser($scope.form)
.success(function (data) {
var user = JSON.parse(data);
if (typeof user !== 'undefined') {
$scope.testusers.push(user);
}
}).error(function() {
notify({
message: 'Could not create user',
classes: 'alert-danger',
templateUrl: 'partials/settingNotification.html'
});
}).finally(function() {
$scope.isBusy = false;
});
};
Услуги:
service('creationService', ['restfulRepo', '$http',
function (restfulRepo, $http) {
this.makeNewUser = function (tempuser) {
return $http({
url: 'http://localhost:60098/***/*************/******',
data: tempuser, method: 'PUT'
});
};
}]);
Проблема, что у меня в том, что если я перееду успех или, наконец, блоки к службе, то у них нет доступ к флагу isBusy или к массиву testusers. Массив привязан к графику в контроллере, который отображает переданную информацию.
'$ http' возвращает обещание, в вашем контроллере вы можете сделать это:' creationService. makeNewUser(). then (function() {$ scope.isBusy = false;}); ' – Erevald
https://docs.angularjs.org/api/ng/service/$http#!/« Предательство '$ http' обеим методам 'success' и' error' были устарели. Вместо этого используйте стандартный метод 'then'. Если' $ httpProvider.useLegacyPromiseExtensions' установлено в 'false', то эти методы будут вызывать ошибку' $ http/legacy'. " – Claies