有没有办法将条件置于ng-click中?在这里,如果有任何表单错误,我希望表单不会被提交,但是我得到了一个解析异常。
<input ng-click="{{if(profileForm.$valid) updateMyProfile()}}" name="submit" id="submit" value="Save" class="submit" type="submit">
我尝试使用ng-disabled但是我的验证插件不起作用因为表单根本就没有提交,所以它没有被触发。
答案 0 :(得分:135)
模板:
<input ng-click="check(profileForm.$valid)" name="submit"
id="submit" value="Save" class="submit" type="submit">
控制器:
$scope.check = function(value) {
if (value) {
updateMyProfile();
}
}
答案 1 :(得分:55)
这可能无关紧要,没有用,但是因为它是javascript,你不必在ng-click语句中使用上面建议的三元组。您还应该能够使用惰性求值(&#34;或die&#34;)语法。所以对于上面的例子:
<input ng-click="{{if(profileForm.$valid) updateMyProfile()}}" name="submit" id="submit" value="Save" class="submit" type="submit">
会变成:
<input ng-click="profileForm.$valid && updateMyProfile()" name="submit" id="submit" value="Save" class="submit" type="submit">
在这种情况下,如果配置文件无效则没有任何反应,否则,将调用updateMyProfile()。就像@falinsky上面提供的链接一样。
答案 2 :(得分:31)
这是一个我发现可能对你有用的黑客攻击,虽然它并不漂亮,但我个人很尴尬地使用这样一行代码:
ng-click="profileForm.$valid ? updateMyProfile() : alert('failed')"
现在,你必须思考'但如果我的profileForm
无效,我不希望它提醒(“失败”)。那是丑陋的部分。对我来说,无论我在这个三元语句的else子句中加入什么,都不会被执行。
然而,如果它被删除了一个错误被抛出。所以你可以用无意义的警报来填充它 我告诉过你这很丑......但是当我做这样的事情时,我甚至没有任何错误 正如Chen-Tsu所提到的那样,这样做的正确方法是他们自己的。
答案 3 :(得分:11)
如果你必须这样做,这里有几种方法:
到目前为止最简单的解决方案。
<input ng-disabled="!profileForm.$valid" ng-click="updateMyProfile()" ... >
如果您正在显示/隐藏一些复杂的标记,可能会没问题。
<div ng-if="profileForm.$valid">
<input ng-click="updateMyProfile()" ... >
</div>
<div ng-if="!profileForm.$valid">
Sorry! We need all form fields properly filled out to continue.
</div>
(记住,没有ng-else
...)
与按钮所在的用户进行通信(他不再查找),但解释无法点击的原因。
<input ng-disabled="!profileForm.$valid" ng-click="updateMyProfile()" ... >
<div ng-if="!profileForm.$valid">
Sorry! We need all form fields properly filled out to continue.
</div>
答案 4 :(得分:5)
我们可以有条件地添加ng-click事件而不使用禁用的类。
HTML:
<input ng-click="profileForm.$valid && updateMyProfile()" name="submit" id="submit" value="Save" class="submit" type="submit">
答案 5 :(得分:5)
从http://php.quicoto.com/inline-ifelse-statement-ngclick-angularjs/开始,如果您真的需要这样做,
ng-click="variable = (condition=='X' ? 'Y' : 'X')"
答案 6 :(得分:0)
写为
<input type="submit" ng-click="profileForm.$valid==true?updateMyProfile():''" name="submit" value="Save" class="submit" id="submit">