ng-href 中的三元表达式

Posted

技术标签:

【中文标题】ng-href 中的三元表达式【英文标题】:ternary expression in ng-href 【发布时间】:2017-09-26 18:11:18 【问题描述】:

ng-href 中有一个复杂的(ish)三元表达式,它似乎不起作用。

ng-href="item.hasTrailer ? 
'#/getTemplateName(routeParams.mainCategoryId).detail
/routeParams.mainCategoryId/routeParams.categoryId 
/item.trailer_media_uri[langCtrl.currentLanguage.isoCode]' : 
'#/getTemplateName(routeParams.mainCategoryId).detail
/routeParams.mainCategoryId/routeParams.categoryId
/item.media_uri'"

如果我将整个表达式包裹在双花括号中

 "item.hasTrailer ... item.media_uri'" 

Angular 向 lexerr 抛出有关不必要引用的消息。我应该尝试通过 ng-href 来实现(然后请告诉我正确的方法/语法),还是应该将此逻辑移动到此页面的控制器中?

【问题讨论】:

您需要将整个三元运算包含在 ... 中。就像你说的,你的表情也很复杂。因此将它放在您的控制器功能中。这样的代码很难阅读。 我有这个猜测并尝试过。正如我在导致 Lexer 错误的原始帖子中所写:[$parse:lexerr] Lexer Error: Unterminated quote at columns 18-73 即使你可以,也不要,ewewew。 @DaveNewton 我知道,我知道 :) 【参考方案1】:

我认为它应该有效:

ng-href="item.hasTrailer ? 
'#/' + getTemplateName(routeParams.mainCategoryId).detail
+ '/' + routeParams.mainCategoryId + '/' + routeParams.categoryId 
+ '/' + item.trailer_media_uri[langCtrl.currentLanguage.isoCode] : 
'#/' + getTemplateName(routeParams.mainCategoryId).detail
+ '/' + routeParams.mainCategoryId + '/' + routeParams.categoryId
 + '/' + item.media_uri"

这太复杂了:)我认为你应该把它放在控制器中。我也不确定角度表达式是否可以是多行的。

【讨论】:

以上是关于ng-href 中的三元表达式的主要内容,如果未能解决你的问题,请参考以下文章

三元表达式是啥?

ng-click中的三元表达式在angularjs中

python中的三元表达式(三目运算符)

if/else 三元表达式中的 def

记录一个Java三元表达式中的陷阱

Yaml 中的三元运算符