$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() 也应该在成功范围内,否则将不确定地调用它 - 可能在查询成功之前。
尽管在用户输入正确的用户名和密码后应用了 $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() 也应该在成功范围内,否则将不确定地调用它 - 可能在查询成功之前。