html:
username: <input type="text" ng-model="username" /><br />
password: <input type="text" ng-model="password" /><br />
<button class="btn btn-primary" type="button" ng-click="login()">Login</button>
js:
$scope.login = function(){
var user = $scope.username;
var pass = $scope.password;
if(user != undefined && pass != undefined){
alert("NOT BLANK" + " user: " + user + " pass: " + pass);
} else {
alert("BLANK");
}
};
问题: 当我第一次使用两个字段中的输入值单击“登录”时,警报显示“非空用户:测试通过:值”,但是当我从字段中删除值并单击“登录”时,警报显示“非空用户:通过:”不正确,因为字段值已被删除。如果我刷新页面,然后单击登录,警报将显示空白。我认为这是缓存的问题。有人可以帮忙吗?我是 angularjs 新手
最佳答案
这不是缓存问题。通过检查 != undefined
您所做的就是检查字符串或变量是否已定义 - 但它仍然可以是空字符串。
所以基本上发生的事情是:您输入一些内容,user
和 pass
的两个字符串被初始化。从此时起,对 undefined
的检查将始终返回 false。
当您删除所有字母时,这两个变量仍然包含一个字符串对象,只是没有字符(基本上像这样:var user = ''
)。
将您的代码更改为以下内容,应该可以工作:
$scope.login = function(){
var user = $scope.username;
var pass = $scope.password;
if(!user && !pass){
alert("BLANK");
} else {
alert("NOT BLANK" + " user: " + user + " pass: " + pass);
}
};
关于javascript - angularjs旧输入字段值使用范围覆盖新输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22412097/