我尝试为项目编写登录功能。 这个想法是,当用户按下登录按钮时,将调用 checkLogin 函数,该函数在后台为用户检查服务器。
一切正常,除非找不到用户,然后应显示一条错误消息,该错误消息由布尔值(例如 $ scope.displayValidationMessage )和 ng控制-show 指令。
我尝试使用 $ scope。$ apply()或 $ scope。$ digest()无济于事。 我正在使用AngularJS 1.7.8版。
$scope.email = "";
$scope.pass = "";
$scope.displayErrorMessage = false;
$scope.displayValidationMessage = false;
$scope.checkLogin = function(){
if($scope.email==""||$scope.pass==""){
return $scope.displayValidationMessage=true;
}
var pdat = {
username:$scope.email,
password:$scope.pass
};
$http({
method:'post',
url: 'http://www.example.org',
data:pdat
}).then(function success(response){
var resnum = response.data.resnum;
if(resnum==1){ //User found
var data = response.data.data;
$cookies.put('token',data.token);
$cookies.put('id',data.id);
$location.path('/main')
}else{//User not found
$scope.displayErrorMessage = true;
}
},function error(response){
$scope.displayErrorMessage=true;
});
};
<div class="notification is-warning" ng-show="displayValidationMessage">
Please fill in every field in the form!
</div>
如何影响更改后的布尔值显示相应的错误消息?
答案 0 :(得分:0)
1 :您无需将默认值设置为false
,所有变量都默认为false
,还需要将email
和{{1 }}作为字符串为空。
pass
2 :尝试将属性转换为一个if(angular.isUndefined($scope.email)) {...}
,这将帮助您获得优化的代码。
object
3 :使用--------------------------------------Html
<input ng-model="form.email">
<input ng-model="form.pass">
--------------------------------------Controller
scope.form = {email: "", pass: "", message: { validation: "", error: "" } }
时不需要在angularjs中return
,而您想要的是:
scope
4 :if(...) { scope.x = true; return false; }
在您已经使用angularjs本机代码时不起作用,例如,当您使用$scope.$apply()
时,您已经在scope
中使用了angularjs:< / p>
apply()
5 :正如@briosheje在您的评论中所说,var textInput = $(".textInput").val(); //jquery selector
$scope.textInput = textInput; // not bind until $apply
$scope.$apply(); //scope applied
在您的$scope.displayErrorMessage
中没有使用,您应该像对html
那样使用它。
答案 1 :(得分:0)
当进入错误功能时(未找到用户),您将$scope.displayErrorMessage
设置为true。
但是,在HTML中,只有一个div带有变量displayValidationMessage
。
添加另一个具有ng-show="displayErrorMessage"
的div,并在其中添加如下错误消息:
<div class="notification is-warning" ng-show="displayErrorMessage">
User not found!
</div>