很奇怪,但是相同的代码在一个系统上运行,但在另一个系统上运行。
我为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!");
}
};
结果 -
在某些系统上获取警报!
我有类似形式的结构的其他观点,并在那里得到相同的问题!
我可以访问开发者控制台,因此我要求遇到此问题的用户向我发送控制台的内容;但那里的一切看起来很好。控制台上没有显示错误!我可以在那里记录一些可以帮助我找到问题的有用的东西吗?
由于我无法在我的最后复制这一点,所以我没有暗示如何解决这个问题。我无法想到这种行为的可能原因是什么。这很奇怪!
答案 0 :(得分:0)
我有一个熟悉的问题,我的javascript没有获取我的ng-model变量的值。
EG。单击该按钮时,警报值将显示为空白:
<input type="text" ng-model="$scope.username"> {{$scope.username}}
<buton ng-click="alertUsername()">Click here</button>
$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");
}