angularjs ng-click中的if语句

pod7payv  于 2023-09-30  发布在  Angular
关注(0)|答案(8)|浏览(148)

有没有办法在ng-click中加入一个条件?在这里,我希望如果有任何表单错误,就不提交表单,但是我得到了一个解析异常。

<input  ng-click="{{if(profileForm.$valid) updateMyProfile()}}" name="submit" id="submit" value="Save" class="submit" type="submit">

我试图使用ng-disabled,但我的验证插件不工作,因为表单从未提交过,所以它不会被触发。

9o685dep

9o685dep1#

模板中不放条件表达式。

在Controller上执行。

模板(T):

<input ng-click="check(profileForm.$valid)" name="submit" 
       id="submit" value="Save" class="submit" type="submit">

控制器:

$scope.check = function(value) {
    if (value) {
       updateMyProfile();
    }
}
v09wglhw

v09wglhw2#

这可能无关紧要,没有用,但因为它是JavaScript,你不必像上面在ng-click语句中建议的那样使用三元。您还应该能够使用惰性求值(“or die”)语法。对于上面的例子:

<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提供的链接一样。

ibrsph3r

ibrsph3r3#

这是我发现的一个可能对你有用的技巧,尽管它并不漂亮,我个人对使用这样一行代码感到尴尬:

ng-click="profileForm.$valid ? updateMyProfile() : alert('failed')"

现在,你一定在想,“但我不想让它在我的profileForm无效时发出警报(“失败”)。这才是丑陋的部分对我来说,无论我在这个三元语句的else子句中放什么,都不会被执行。
如果被删除,则会抛出错误。所以你可以用一个毫无意义的警报来填充它。
我告诉过你它很丑...但我做这样的事情时甚至没有任何错误。
正确的方法是如陈子文所说的,但要各取所需。

8qgya5xd

8qgya5xd4#

如果你必须这样做,这里有几种方法:

使用ng-disabled禁用按钮

到目前为止最简单的解决方案。

<input ng-disabled="!profileForm.$valid" ng-click="updateMyProfile()" ... >

使用ng-if隐藏按钮(并显示其他内容)

如果你要显示/隐藏一些复杂的标记,这可能没问题。

<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>
kq4fsx7k

kq4fsx7k5#

http://php.quicoto.com/inline-ifelse-statement-ngclick-angularjs/开始,如果你真的必须这样做,这就是你的方法:

ng-click="variable = (condition=='X' ? 'Y' : 'X')"
yr9zkbsy

yr9zkbsy6#

我们可以有条件地添加ng-click事件,而不使用disabled类。
超文本标记语言:

<input ng-click="profileForm.$valid && updateMyProfile()" name="submit" id="submit" value="Save" class="submit" type="submit">
xggvc2p6

xggvc2p67#

写为

<input type="submit" ng-click="profileForm.$valid==true?updateMyProfile():''" name="submit" value="Save" class="submit" id="submit">
xwbd5t1u

xwbd5t1u8#

你可以把条件句放在标记里面。试试看:

ng-class="{true:'active',false:'disable'}[list_status=='show']"

相关问题