我正在使用一个角度工厂在我的控制器内部运行,但是我的终于在控制器中并不好玩,它在下面的工厂中运行的是代码:factory -
var createProfile = function (profile) {
var deferred = $q.defer();
$http.post("localhost/profile", profile)
.success(function(data, status){
deferred.resolve(data);
})
.error(function(error, status){
$rootScope.error = sitesettings.parseErrors(error);
})
.finally(function(){
console.log('hello'); // **this message logs**
});
return deferred.promise;
};
在我的控制器中我有这个:
profileFactory.createProfile (profile)
.then(function (data) {
// **works if successful**
})
.finally(function () {
console.log('fin'); // **this never fires, successfully or on an error**
});
我想我可以将我的对象传递给profileFactory,如 profileFactory.createProfile(profile,myObject)并返回它,但它似乎反直觉。
有人可以提供建议。谢谢。
亲切的问候
答案 0 :(得分:2)
这是因为你正在返回一个你从未手动解决的不同承诺。如果你只是return $http.post(//etc.)
它应该可以正常工作。
编辑:
我可能很快就会说。我错过了你在解决你的成功。但这似乎没必要。只是做
return $http.post("localhost/profile", profile);
让控制器附加成功,错误,最后处理。