0

尽管在用户输入正确的用户名和密码后应用了 $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);
};
});
4

2 回答 2

1

为了进一步参考我的评论作为答案:1)首先阅读Patrick对帖子的评论2)解决方案:无需在apply函数中设置isV值,但您可以在之后调用它,如下所示:

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

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

于 2018-03-29T14:04:30.260 回答
0

尝试使用它而不是 $scope.$apply():

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

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

于 2018-03-26T11:07:16.510 回答