有没有办法在ng-click内放置条件?在这里,如果存在任何表单错误,我希望不提交该表单,但是我得到了一个解析异常。
<input ng-click="{{if(profileForm.$valid) updateMyProfile()}}" name="submit" id="submit" value="Save" class="submit" type="submit">
我尝试使用ng-disabled,但是我的验证插件无法正常工作,因为根本不提交表单,因此不会触发。
有没有办法在ng-click内放置条件?在这里,如果存在任何表单错误,我希望不提交该表单,但是我得到了一个解析异常。
<input ng-click="{{if(profileForm.$valid) updateMyProfile()}}" name="submit" id="submit" value="Save" class="submit" type="submit">
我尝试使用ng-disabled,但是我的验证插件无法正常工作,因为根本不提交表单,因此不会触发。
Answers:
模板:
<input ng-click="check(profileForm.$valid)" name="submit"
id="submit" value="Save" class="submit" type="submit">
控制器:
$scope.check = function(value) {
if (value) {
updateMyProfile();
}
}
<a ng-click="pluginsChanged ? restartServer($event) : null" href="https://stackoverflow.com/">Back</a>
仅从HTML来看,很明显,当单击此链接时,如果插件已更改,则服务器将重新启动,否则不会发生任何特殊情况。如果将其放在控制器中,我将需要一个单独的函数,因为我使用restartServer
elesewhere,并且在HTML中不会明显发生什么。
这可能无关紧要,也没有用,但由于是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">
在这种情况下,如果配置文件无效,则什么也不会发生,否则,将调用updateMyProfile()。就像@falinsky提供的链接一样。
我发现这是一种可能对您有用的hack,尽管它并不漂亮,而且我个人会尴尬地使用这样的代码行:
ng-click="profileForm.$valid ? updateMyProfile() : alert('failed')"
现在,您必须考虑“但如果我的身份无效,我不希望它发出警报(“失败”)profileForm
。好吧,这是丑陋的部分。对我来说,无论我在此三元语句的else子句中输入什么内容,都永远不会执行。
但是,如果将其删除,则会引发错误。因此,您可以使用无意义的警报来填充它。
我告诉你这很丑...但是当我做这样的事情时,我什至没有得到任何错误。
正确的方法是如Chen-Tsu所提到的,但要针对每个人。
ciCtrl.iconSelections.style === 2 ? ciCtrl.iconSelections.style = 1 : blah
如果您确实必须这样做,可以使用以下几种方法:
到目前为止,最简单的解决方案。
<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>
从http://php.quicoto.com/inline-ifelse-statement-ngclick-angularjs/,你这是怎么做到这一点,如果你真的有:
ng-click="variable = (condition=='X' ? 'Y' : 'X')"