javascript - angularjs旧输入字段值使用范围覆盖新输入值

标签 javascript html angularjs

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 您所做的就是检查字符串或变量是否已定义 - 但它仍然可以是空字符串。

所以基本上发生的事情是:您输入一些内容,userpass 的两个字符串被初始化。从此时起,对 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/

相关文章:

javascript - 在我执行 git init 并创建一个新分支后,Meteor 崩溃了

html - Bootstrap 导航栏 CSS 问题

AngularJS - ng-bind-html-unsafe 和 ng-model 问题

javascript - AngularJS - 使用 controllerAs 语法和服务属性的 DRY 双向数据绑定(bind)

javascript - Jquery .after() 未按预期插入

javascript - 仅在需要时加载js脚本

javascript - 从外部源加载 html

javascript - 将 AngularJS $filter 与 ng-disabled 一起使用

javascript - 组合框元素符号上升

javascript - Bootstrap "hidden-xs"不起作用 + 无法为小视口(viewport)制作粘性页脚