运行多于一行代码的角三元表达式

Posted

技术标签:

【中文标题】运行多于一行代码的角三元表达式【英文标题】:Angular ternary expression that runs more than one line of code 【发布时间】:2015-10-07 05:48:34 【问题描述】:

所以我有这个代码示例, 在我的一种形式中,它运行良好。

ng-submit="
    commentCtrl.edit(comment.id, comment.text);
    comment.edit=false;
"

另一方面,当我尝试在三元 ng-keyup 中运行多个“命令”时,出现问题,angular 无法解析它。

ng-keyup="
($event.keyCode == 13 && !$event.shiftKey)
?
commentCtrl.edit(comment.id, comment.text);comment.edit=false
:
return"

也试过了:

($event.keyCode == 13 && !$event.shiftKey)
?
commentCtrl.edit(comment.id, comment.text) && comment.edit=false
:
return"

请帮帮我!

【问题讨论】:

【参考方案1】:

在标记内编写此类表达式是一种不好的做法。

无论如何,您都可以通过将值放入数组来做到这一点:

ng-submit="[commentCtrl.edit(comment.id, comment.text), comment.edit=false]"

ng-keyup="($event.keyCode == 13 && !$event.shiftKey)
? [commentCtrl.edit(comment.id, comment.text), comment.edit=false]
: 0"

【讨论】:

是否可以使用 ng-keyup 防止默认按键?我尝试使用这个数组:[$event.preventDefault,commentCtrl.edit(comment.id,comment.text),comment.edit=false] @GuyMazuz, $event.preventDefault - 你刚刚阅读了这个函数,但还没有调用它。请改用$event.preventDefault() 你可能是对的,但无论哪种方式都不起作用:(出于同样的原因,我猜 alert('123') 不起作用,也许如果我将其设置为 true?像这样: $event.preventDefault=true @GuyMazuz,我需要更多代码才能解开。请用最少的代码示例和问题描述提出另一个问题。然后使用 cmets 邀请我。

以上是关于运行多于一行代码的角三元表达式的主要内容,如果未能解决你的问题,请参考以下文章

列表生成式和三元表达式(python3入门)

php 三元运算符实例详细介绍

三元表达式 ,迭代器, 生成器,二分法

python if-else替代三元表达式

三元表达式列表生成式生成器表达式

python中的三元表达式,列表解析 和 生成器表达式