Controller.js
var vm = this;
vm.admin = {};
vm.add = function () {
API.addAdmin(token, vm.admin)
.then(function (resp) {
vm.hideForm = true;
vm.showButton = true;
Notify.green(resp);
}, function (resp) {
Notify.red(resp);
});
};
API.js
function addAdmin(token, dataObj) {
return Constant.getApiUrl()
.then(function (url) {
$http({
method: 'POST',
url: url + '/client/admin',
headers: {
'Token': token
},
data: dataObj
}).then(handleResp);
function handleResp(resp) {
var responseStatus = (resp.status >= 200 && resp.status < 300) ? 'good' : 'bad';
if (responseStatus === 'good') {
console.log("Success" + resp);
return resp;
} else {
console.log("Failed" + resp);
return resp;
}
}
})
}
如果我在API中获得成功响应,那么我需要将其连接到我的控制器中的成功函数,如果我在我的API中收到错误消息,那么我需要它将它连接到我的控制器中的错误功能。我应该如何评估API的响应状态(成功或错误)。
我不想将successfn,errorfn从我的控制器传递给API(只有在没有其他选择的情况下)。
我需要从API到控制器获取响应数据,以便在Notify消息中显示它。
谢谢!
答案 0 :(得分:0)
在服务中(在&#34中指定响应值; originalData &#34;):
angular.module('appname').service('myserviceName', function(yourExistingService){
this.myFunction= function(originalData) {
//for next line to work return promise from your addAdmin method.
var promise = yourExistingService.getResponseFromURL(originalData);
return promise;
}
});
在你的控制器中:
var promise = myserviceName.myFunction($scope.originalData);
promise.$promise.then(function() {
console.log($scope.originalData);
});
然后你可以检查你&#34; originalData &#34;并根据您的需要编写代码。有关详细信息,请查看此http://andyshora.com/promises-angularjs-explained-as-cartoon.html。