javascript - 对过滤器参数应用过滤器

标签 javascript html angularjs angular-translate

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

因此,我需要在执行变量替换的 Angular 平移过滤器的过滤器参数上应用时间格式过滤器( Angular 矩)。

但这应该是独立于 Angular 平移和 Angular 矩的一般问题/用例。

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

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

最佳答案

为了将来引用 - 您需要在表达式周围添加括号,如下所示:

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

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

关于javascript - 对过滤器参数应用过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22862408/

相关文章:

php - 使用ajax通过键盘中的向上/向下键选择元素以进行自动完成

javascript - Controller 不使用 angularJS 渲染

angularjs - 如何在 Dockerfile 中运行 Bower install?

javascript - 加载更多数据 - ScrollTop 功能不起作用

javascript - jQuery 插件 listnav 无法正常使用功能

javascript - 如何设置弹出窗口的超时时间?

html - 仅在 IE 中位置不正确

javascript - 在命令行上预编译 dust.js 模板

javascript - 在 Pangram 中设置字母类

javascript - 具有倍数的 Angular $anchorScroll