$ scope。$ apply()无效 - AngularJs

时间:2018-03-23 12:24:07

标签: angularjs angularjs-scope parse-javascript-sdk angularjs-apply

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

尝试使用此代替$ scope。$ apply():

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

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