ngStorage($ localStorage)在.then()中工作

时间:2016-09-30 10:37:38

标签: javascript angularjs

我对ngStorage有疑问。当我将我的工厂用于jQuery的$ajax时,我无法在$localStorage中使用.then()(它不会工作)。

$scope.updateProfile = function () {          
    updateProfileFactory.init($scope.dataProfile).then(          
        function (data)   
            if (data.status == "success") {
                $localStorage.currentUser.fullname = $scope.dataProfile.u_fullname;  
            }                 
        }        
    )
}

如果我在$localStorage之外使用.then(),它可以正常工作,但我必须把它放进去。

$scope.updateProfile = function () {        
    $localStorage.currentUser.fullname = $scope.dataProfile.u_fullname;
    updateProfileFactory.init($scope.dataProfile).then(
        function (data) {
            if (data.status == "success") {
                // code 
            }            
        }        
    )
}

问题出在哪里?

1 个答案:

答案 0 :(得分:3)

为什么不使用Angular的$http库来执行您的AJAX操作?混合jQuery和Angular证明可以产生不可预测的结果。

我可以看到你已经在你的应用程序中使用了Angular。所以你没有理由不完全采用Angular方式。 $http服务提供了jQuery' $.ajax提供的所有功能以及更多功能。

当你在vanilla Javascript或jQuery函数中使用Angular函数时,Angular并不知道这些函数被调用,因为它们超出了它的范围。在这里你可以使用Angular的$apply,但这并不理想,而且很糟糕。

此处您的问题可能是$.ajax的回调函数不知道$localStorage,因为它不是作为依赖项传递的。