我正在寻找有关如何执行以下操作的建议:
我有一个'翻译'服务,可以将密钥转换为字符串(用于本地化)。指令'local'调用它。它看起来像这样:
<local>key</local>
这会在翻译数据中查找“键”并返回其值,然后将其替换为值。所以也许键'username'会返回值'User Name:'以包含在页面中。
问题:我想支持带有“值”的字符串,例如键'minLength'的字符串值为'最小长度为{0}个字符'。我想要以下内容:
<local>
<key>minLength</key>
<val>{{policy.minLength}}</val>
</local>
在评估<local>
标记时(在其链接阶段)尚未设置$ scope.policy的值时,我遇到了问题。
我假设因为我用一个值替换'local'标签,所以当$ scope.policy.minLength实际上有一个值时,实际的标签不会再次被评估。
有人可以告诉我这是怎么做到的吗?我在$ interpo上查找了一些东西,但我认为<local>
标签是替换的事实:true在这里杀了我。任何想法如何解决它?
答案 0 :(得分:0)
您应该将指令设置为 transclude ,并使用built指令来控制内部语句的评估。
看看这是否有帮助: https://docs.angularjs.org/api/ng/directive/ngTransclude
答案 1 :(得分:0)
我想出了如何做到这一点。使用上面的例子:
<val>
标记的文本内容。<val>
内容的格式字符串(对于密钥)。该值将为“最小长度为{{policy.minLength}}个字符”。<local>
标记替换为<span>
(即相当于'replace:true')<span>
的textContent替换为新值即可。