<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>
8条答案
按热度按时间9o685dep1#
模板中不放条件表达式。
在Controller上执行。
模板(T):
控制器:
v09wglhw2#
这可能无关紧要,没有用,但因为它是JavaScript,你不必像上面在ng-click语句中建议的那样使用三元。您还应该能够使用惰性求值(“or die”)语法。对于上面的例子:
会变成:
在这种情况下,如果配置文件无效,则不会发生任何事情,否则,将调用updateMyProfile()。就像上面@falinsky提供的链接一样。
ibrsph3r3#
这是我发现的一个可能对你有用的技巧,尽管它并不漂亮,我个人对使用这样一行代码感到尴尬:
现在,你一定在想,“但我不想让它在我的
profileForm
无效时发出警报(“失败”)。这才是丑陋的部分对我来说,无论我在这个三元语句的else子句中放什么,都不会被执行。如果被删除,则会抛出错误。所以你可以用一个毫无意义的警报来填充它。
我告诉过你它很丑...但我做这样的事情时甚至没有任何错误。
正确的方法是如陈子文所说的,但要各取所需。
8qgya5xd4#
如果你必须这样做,这里有几种方法:
使用ng-disabled禁用按钮
到目前为止最简单的解决方案。
使用ng-if隐藏按钮(并显示其他内容)
如果你要显示/隐藏一些复杂的标记,这可能没问题。
(记住,没有
ng-else
……)两者兼而有之
告诉用户按钮在哪里(他不会再找它了),但解释为什么它不能被点击。
kq4fsx7k5#
从http://php.quicoto.com/inline-ifelse-statement-ngclick-angularjs/开始,如果你真的必须这样做,这就是你的方法:
yr9zkbsy6#
我们可以有条件地添加ng-click事件,而不使用disabled类。
超文本标记语言:
xggvc2p67#
写为
xwbd5t1u8#
你可以把条件句放在标记里面。试试看: