如果在ng-click语句中
有没有办法在ng-click中放置一个条件? 在这里,我希望如果有任何表单错误,表单不会被提交,但是我得到了一个parsingexception。
<input ng-click="{{if(profileForm.$valid) updateMyProfile()}}" name="submit" id="submit" value="Save" class="submit" type="submit">
我试图使用ng禁用,但然后我的validation插件不起作用,因为forms永远不会提交,所以它不会被触发。
不要在模板中放置任何条件expression式。
在控制器上执行。
模板:
<input ng-click="check(profileForm.$valid)" name="submit" id="submit" value="Save" class="submit" type="submit">
控制器:
$scope.check = function(value) { if (value) { updateMyProfile(); } }
这可能是不相关的,没有用,但是因为它是JavaScript,所以你不必使用ng-click语句中提到的三元组。 你也应该可以使用懒惰的评估(“或死”)语法。 所以对于上面的例子:
<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">
在这种情况下,如果configuration文件无效,则不会有任何反应,否则,调用updateMyProfile()。 就像@falinsky上面提供的链接一样。
下面是我发现的一个黑客可能会为你工作,虽然它不漂亮,我个人会尴尬使用这样的代码行:
ng-click="profileForm.$valid ? updateMyProfile() : alert('failed')"
现在,你一定在想,但是如果我的profileForm
无效,我不希望它提醒(“失败”)。 那这是丑陋的一部分。 对我而言,无论我在这个三元陈述的其他条款中join了什么,都不会被执行。
但是,如果它删除了一个错误抛出。 所以你可以用一个毫无意义的警报填充它。
我告诉过你这很丑陋,但是当我做这样的事时,我甚至不会有任何的错误。
这样做的正确方法就像陈素贞所说的那样,但是对于他们自己来说。
如果你必须这样做,下面是几种方法:
禁用ng-disablebutton
迄今为止最简单的解决scheme。
<input ng-disabled="!profileForm.$valid" ng-click="updateMyProfile()" ... >
用ng-if隐藏button(并显示其他内容)
如果你显示/隐藏一些复杂的标记可能会好起来的。
<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
…)
两者的混合
与button所在的用户进行通信(他不再寻找它),但解释为什么它不能被点击。
<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>
我们可以有条件地添加ng-click事件,而不使用禁用的类。
HTML:
<input ng-click="profileForm.$valid && updateMyProfile()" name="submit" id="submit" value="Save" class="submit" type="submit">
从http://php.quicoto.com/inline-ifelse-statement-ngclick-angularjs/ ,这是你如何做到这一点,如果你真的必须:
ng-click="variable = (condition=='X' ? 'Y' : 'X')"
你可以把条件标签内。 尝试:
ng-class="{true:'active',false:'disable'}[list_status=='show']"
- AngularJSexpression式在IE8的style属性中不起作用
- 在标记中设置angular度范围variables
- 在ng-options上使用filter来更改显示的值
- “未知提供者:aProvider < – a”我如何find原始提供者?
- 如何在“ng-src”中调用函数
- AngularJS – 在使用ng模型时,input文本框的Value属性会被忽略?
- 如何在AngularJS中设置单选button的默认值?
- ionic framework$ state.go('app.home'); 在页面上添加我想要去(如何删除它)的返回button?
- AngularJS自动同步服务器和客户端之间的数据