$scope.$apply() 不工作 - AngularJs

$scope.$apply() not working - AngularJs

尽管在用户输入正确的用户名和密码后应用了 $scope.$apply() ,但 isV(boolean) 的值没有改变。 $scope.$digest() 也不起作用

app.controller('validateCtrl', function($scope,$location) {

Parse.initialize("PARSE APP ID");
Parse.serverURL = 'PARSE SERVER URL'


$scope.isV="false";

$scope.submit = function(){

    var username =$scope.username;
    var password = $scope.password;

    Parse.User.logIn(username, password, {
        // If the username and password matches
        success: function(user) {
            alert('Welcome!');
            console.log("welcome");

            $scope.$apply(function(){
                  $scope.isV="true";      
            });

        },
        // If there is an error
        error: function(user, error) {
            alert(error);
        }
    });
 console.log($scope.isV);
};
});

尝试使用这个代替 $scope.$apply():

$timeout(function() {
     $scope.isV = "true";
});

您必须在控制器中注入 $timeout 才能使其正常工作。

为了进一步参考我的评论作为答案: 1) 首先阅读 Patrick 在 post 上的评论 2)解决方法: 不需要在 apply 函数中设置 isV 值,而是在之后调用它,如下所示:

$scope.isV = true;
$scope.$apply();

此外,console.log() 也应该在成功范围内,否则将不确定地调用它 - 可能在查询成功之前。