2

很奇怪,但是是的,相同的代码在一个系统上有效,但在另一个系统上无效。

我为 Adob​​e Creative Cloud 应用程序开发了一个基于 HTML-5 的扩展(Adobe CC 内置了支持基于 HTML 的扩展的 chromium 框架),其中我使用了 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!");
   }
};

结果-

在某些系统上收到警报!

我有其他具有类似形式结构的观点,并且在那里也遇到了同样的问题!

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

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

4

2 回答 2

0

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

例如。当我单击按钮时,警报值变为空白:

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前缀。

于 2015-01-05T09:16:01.207 回答
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");
}
于 2016-01-21T11:10:05.443 回答