我有一个(相当复杂的)指令,可以用货币提供金额。它根据该货币的规则格式化货币(例如,如果货币具有美分等)并根据区域设置格式化数字和符号,如果金额为负等,则添加符号和类等等。
我想将指令的结果用作翻译中的变量。
有一个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}}"
};
(在关键词中,关键是PAY_TO_PROPER
)
目标是用指令返回的格式化HTML替换{{ amount }}
。
请注意,在plunker中,指令是简化的,实际上它需要考虑很多事情,我真的不想添加到模板中。例如基于ISO_CODE的后备符号,根据货币确定要渲染的分数(有0,2,3,5甚至8位数的货币,以此命名;这些东西很复杂)
这种常见模式会是什么?是否将一个呈现的指令的结果作为变量以正确的方式传递给Angular,或者这是一个丑陋的黑客?
我使用翻译或指令错了吗?我很难相信这是如此困难,我找不到其他人在谷歌或stackoverflow上寻找如何做到这一点。
答案 0 :(得分:1)
有一个名为translate-compile
的角度转换选项,您可以使用它来编译在当前范围(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="\'€\'"></currency>', beneficiary: 'carol' }" translate-compile>PAY_TO_PROPER</p>