Angular终于没有在控制器中触发

时间:2015-04-19 15:36:53

标签: angularjs angular-services

我正在使用一个角度工厂在我的控制器内部运行,但是我的终于在控制器中并不好玩,它在下面的工厂中运行的是代码: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)并返回它,但它似乎反直觉。

有人可以提供建议。谢谢。

亲切的问候

1 个答案:

答案 0 :(得分:2)

这是因为你正在返回一个你从未手动解决的不同承诺。如果你只是return $http.post(//etc.)它应该可以正常工作。

编辑:

我可能很快就会说。我错过了你在解决你的成功。但这似乎没必要。只是做

return $http.post("localhost/profile", profile);

让控制器附加成功,错误,最后处理。