Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果语句为ng,请单击_Javascript_Angularjs - Fatal编程技术网

Javascript 如果语句为ng,请单击

Javascript 如果语句为ng,请单击,javascript,angularjs,Javascript,Angularjs,有没有办法在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,但我的验证插件不起作用,因为表单从未提交过,所以不会被触发。

不要在模板中放入任何条件表达式。 在控制器上执行。 模板:

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

下面是我发现的一个可能适用于您的黑客程序,尽管它并不漂亮,而且我个人会为使用这样一行代码感到尴尬:

ng-click="profileForm.$valid ? updateMyProfile() : alert('failed')"
现在,您一定在想,如果我的
profileForm
无效,我不希望它发出警报(“失败”)。好吧,这就是丑陋的部分。对我来说,不管我在这个三元语句的else子句中放了什么,都不会执行

然而,如果删除了它,就会抛出一个错误。所以你可以用一个毫无意义的警告来填充它。
我告诉过你这很难看。。。但是当我做这样的事情时,我甚至没有得到任何错误。

正确的方法是像Chen Tsu提到的那样,但每个人都有自己的方法。

这可能不相关,也没有任何用处,但由于它是javascript,您不必像上面ng click语句中建议的那样使用三元。您还应该能够使用lazy求值(“或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提供的链接一样

我们可以有条件地添加ng click事件,而无需使用disabled类

HTML:

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

从中,如果您确实需要,您可以这样做:

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

您可以在标记内放置条件句。尝试:

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

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

禁用禁用ng的按钮 到目前为止,这是最简单的解决方案

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

写为

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


可能重复的@falinsky NO无法帮助meCheck检查此问题的答案:。它可以是ng click=“profileForm.$valid&&updateMyProfile()”或ng click=“profileForm.$invalid | | updateMyProfile()”,例如:
从HTML中可以明显看出,单击此链接时,如果插件已更改,则服务器将重新启动,否则不会发生任何特殊情况。如果我把它放在控制器中,我需要一个单独的函数,因为我在这里使用
restartServer
elesewhere,在HTML中发生的事情并不明显。当其他人后来想知道为什么服务器有时会在单击“后退”按钮时重新启动时,它会立即显现出来。而不是他们必须去寻找这个函数,看看它在什么条件下重新启动。抱歉,但是不能认为这个答案有用,你不能解释它,“乔纳森。”这是一个正确的答案。流条件是逻辑的一部分,因此应该放在控制器中。Angular提供if和show指令来“表示”更改,但即使它们也应该通过控制器提供。这是一个完美的答案,您不需要将逻辑放在视图中,if语句就是该逻辑。您通过控制器进行的函数调用,有时该函数的逻辑会委托给服务,如果它可以在站点的不同区域重复和使用。有时,在模板中这样做是有意义的。谢谢你的提示。得到错误2是因为三元数需要一个正的和负的结果。这对我有用:
ciCtrl.iconsections.style==2?ciCtrl.iconsections.style=1:blah
我在多个地方使用类似的东西。ng class=“column.columnname!='vendor'?'alt content hoverable':false“应该是”如果配置文件无效,则什么也不会发生”,这是回答实施错误做法的问题的正确方法。但就像另一个答案一样,这不是最佳实践。至少当逻辑在视图中实现时,你应该问自己A)我是否有可能改变这个,如果答案是肯定的,那么你需要在控制器中执行该逻辑。你开始在你的网站上这样做,这将是真正难以测试或改变任何东西在未来。这是解决很多头痛问题的入门药。依我看,这是解决给定问题的最佳方案。如果有效条件有点复杂,它肯定可以进入控制器。谢谢这就回答了这个问题,我只是不认为这是一个最佳实践。但它再次完美地回答了这个问题。我觉得应该用一句话来说明它为什么是糟糕的形式。但你不能说他没有回答实际问题。
<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>
<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>
<input type="submit" ng-click="profileForm.$valid==true?updateMyProfile():''" name="submit" value="Save" class="submit" id="submit">