如何将渲染指令的结果作为变量传递给 angular-translate

How to pass the results from a rendered directive as variable to angular-translate

我有一个(相当复杂的)指令,可以用货币显示金额。它根据该货币的规则格式化货币(例如,如果货币有美分等)并根据区域设置格式化数字和符号,如果金额为负则添加符号和 类 等等等等。

我想将指令的结果用作翻译中的变量。

有个plunker with a simplified setup here

简而言之,我想要的是:

Your balance: <strong currency data-amount="-1337" data-symbol="'€'"></strong>
<p translate translate-values="{ currency: '€', amount: 1337, beneficiary: 'carol' }">PAY_TO</p>

翻译如下:

var translations = {
  PAY_TO: "You must pay {{ amount }} to {{ beneficiary}}"
};

(在 plunker 中,密钥是 PAY_TO_PROPER

目标是将 {{ amount }} 替换为从指令返回的 HTML 的格式化片段。

请注意,在 plunker 中,指令被简化了,实际上它考虑了很多事情,我真的不想添加到模板中的事情。例如基于 ISO_CODE 的后备符号,根据货币确定要呈现多少小数(有 0、2、3、5 甚至 8 位的货币,仅举几例;这东西很复杂)

常见的模式是什么?在 Angular 中将渲染指令的结果作为变量传递是一种正确的方式,还是会是一个丑陋的 hack?

我使用的翻译或指令有误吗?我简直不敢相信这太难了,我找不到其他人在 google 或 Whosebug 上寻找如何做到这一点。

有一个名为 translate-compile 的 angular-translate 选项,您可以使用它来编译在当前范围 (https://angular-translate.github.io/docs/#/guide/05_using-translate-directive#using-translate-directive_post-compiling) 上下文中传递到翻译中的值。

你可以这样使用它:

<p translate translate-values="{ amount: '<currency data-amount=\'1337\' data-symbol=&quot;\'€\'&quot;></currency>', beneficiary: 'carol' }" translate-compile>PAY_TO_PROPER</p>

见附件fiddle:http://plnkr.co/edit/IRFzWU2Qfw7zxdBNSl4L