与`ng-model`的数据绑定在某些系统上不起作用

时间:2014-07-02 09:16:03

标签: angularjs angularjs-scope adobe-cc angularjs-ng-model adobe-extension

很奇怪,但是相同的代码在一个系统上运行,但在另一个系统上运行。

我为Adobe Creative Cloud Applications开发了一个基于HTML-5的扩展(Adobe CC内置了支持基于HTML的扩展的chrome框架),其中我使用了angularJS框架。

我在很多系统上对它进行了测试,结果非常好。但是当我向朋友发送相同的应用程序时。对于其中一些 - 视图加载正常,按钮单击也正常工作但输入文本没有正确绑定!我继续从中获取空白文本 - 我在ng-model框中使用了<input>

这是我的代码 -

查看 -

<div>   
   <input type='text' placeholder='Email' ng-model='user.email' />
   <input type='password' placeholder='Password' ng-model='user.password' />
   <button ng-click='login()'>Login</button>
</div>  

控制器 -

$scope.user={};
$scope.login=function(){
   if($scope.user.email!="" && $scope.user.password!=""){
       ...
       ...
   }
   else{
      alert("Don't leave the fields blank!");
   }
};

结果 -

  

在某些系统上获取警报!

我有类似形式的结构的其他观点,并在那里得到相同的问题!

我可以访问开发者控制台,因此我要求遇到此问题的用户向我发送控制台的内容;但那里的一切看起来很好。控制台上没有显示错误!我可以在那里记录一些可以帮助我找到问题的有用的东西吗?

由于我无法在我的最后复制这一点,所以我没有暗示如何解决这个问题。我无法想到这种行为的可能原因是什么。这很奇怪!

2 个答案:

答案 0 :(得分:0)

我有一个熟悉的问题,我的javascript没有获取我的ng-model变量的值。

EG。单击该按钮时,警报值将显示为空白:

HTML:

<input type="text" ng-model="$scope.username"> {{$scope.username}}
<buton ng-click="alertUsername()">Click here</button>

使用Javascript:

$scope.username="";
$scope.alertUsername = function() {
  alert($scope.username);
}

当我将html更改为以下内容时,它提醒了我的价值:

<input type="text" ng-model="username"> {{username}}
<buton ng-click="alertUsername()">Click here</button>

似乎所有我不得不在我的html中使用 $ scope 前缀。

答案 1 :(得分:0)

我认为您的代码是正确的,但如果设置了一个输入,ng-model会创建用户对象。

因此,如果您将所有输入表格留空,则您的用户对象将为“未定义”

因此,您必须先检查用户对象是否未定义。

if (user === undefined) alert("email and password are empty");

如果一个表单输入设置了某个值,则使用输入表单字段创建用户对象。

有正确的代码:

if (user === undefined) alert("email and password are empty");
else {
    console.log(user);
    if (user.login === undefined) alert("login is empty");
    else if (user.password === undefined) alert("password is empty");
    else alert("amazing, thanks");
}