对过滤器参数应用过滤器

时间:2014-04-04 12:09:00

标签: javascript html angularjs angular-translate

我正在使用angular-translate,需要进行日期/时间本地化。

因此,我需要对滤波器参数应用时间格式滤波器(角度矩),以进行变量替换的角度平移滤波器。

但这应该是一个普遍的问题/用例,与angular-translate和angular-moment无关。

没有参数过滤它可以工作(但我没有本地化的时间格式):

<div data-ng-repeat="msg in data.messages">;
   {{msg.text | translate:{timestamp: msg.timestamp } }}
</div>

不能工作:

<div data-ng-repeat="msg in data.messages">
  {{msg.text | translate:{timestamp: msg.timestamp | amDateFormat:'LT'} }}
</div>

产生语法错误:

Error: [$parse:syntax] Syntax Error: Token '|' is unexpected, expecting [}] at column 73 of the expression [msg.text | translate:{timestamp: msg.timestamp | amDateFormat:'LT' } ] starting at [| amDateFormat:'LT' } ].
http://errors.angularjs.org/1.2.15/$parse/syntax?

第二次猜测也不起作用:

<div data-ng-repeat="msg in data.messages">
 {{msg.text | translate:{timestamp: {msg.timestamp | amDateFormat:'LT'} } }}
</div>

产生语法错误:

Error: [$parse:syntax] Syntax Error: Token '|' is unexpected, expecting [}] at column 74 of the expression [msg.text | translate:{timestamp: {msg.timestamp | amDateFormat:'LT'} } ] starting at [| amDateFormat:'LT' } } ].
http://errors.angularjs.org/1.2.15/$parse/syntax?

我正在使用AngularJS 1.2.15。

1 个答案:

答案 0 :(得分:0)

供将来参考 - 您需要在表达式周围添加括号,如下所示:

<div data-ng-repeat="msg in data.messages">
  {{msg.text | translate:{ timestamp: (msg.timestamp | amDateFormat:'LT') } }}
</div>

这是相关部分:(msg.timestamp | amDateFormat:'LT')