angularjs - 如何使用内部 $interpolated 表达式计算值
angularjs - how to evaluate value with internal $interpolated expression
我正在寻找有关如何执行以下操作的建议:
我有一个 'translation' 服务可以将键转换为字符串(用于本地化)。指令 'local' 调用它。它看起来像这样:
<local>key</local>
这会在翻译数据中查找 'key' 并 returns 它的值,然后用该值替换自身。所以也许键 'username' returns 值 'User Name:' 包含在页面中。
问题:我想用 "values" 支持字符串,例如键 'minLength' 具有字符串值 'The minimum length is {0} characters'。我想要如下内容:
<local>
<key>minLength</key>
<val>{{policy.minLength}}</val>
</local>
当评估 <local>
标签(在其 link 阶段)时 $scope.policy 的值尚未设置时,我遇到了一个问题。
我假设因为我用一个值替换了 'local' 标签,当 $scope.policy.minLength 实际有一个值时,实际标签不会留下来再次评估。
有人可以告诉我该怎么做吗?我已经在 $interpolate 上查找了一些东西,但我认为 <local>
标签是 replace:true 这一事实让我很难受。有什么解决办法吗?
您应该将指令设置为 transclude 并使用内置指令来控制内部语句的计算。
看看这是否有帮助:
https://docs.angularjs.org/api/ng/directive/ngTransclude
我知道怎么做了。使用上面的例子:
- 获取密钥和任何
<val>
标签的文本内容。
- 调用翻译服务以检索添加了
<val>
内容的格式字符串(用于密钥)。该值将是 "The minimum length is {{policy.minLength}} characters".
- 创建一个 $watch。 'current value function' 部分在上面的值上创建一个 $interpolate() ,然后在当前范围的上下文中对其进行评估。
- 用
<span>
替换原来的 <local>
标签(即相当于 'replace:true')
- 每当 $watch 的值发生变化时,只需将
<span>
的 textContent 替换为新值。
我正在寻找有关如何执行以下操作的建议:
我有一个 'translation' 服务可以将键转换为字符串(用于本地化)。指令 'local' 调用它。它看起来像这样:
<local>key</local>
这会在翻译数据中查找 'key' 并 returns 它的值,然后用该值替换自身。所以也许键 'username' returns 值 'User Name:' 包含在页面中。
问题:我想用 "values" 支持字符串,例如键 'minLength' 具有字符串值 'The minimum length is {0} characters'。我想要如下内容:
<local>
<key>minLength</key>
<val>{{policy.minLength}}</val>
</local>
当评估 <local>
标签(在其 link 阶段)时 $scope.policy 的值尚未设置时,我遇到了一个问题。
我假设因为我用一个值替换了 'local' 标签,当 $scope.policy.minLength 实际有一个值时,实际标签不会留下来再次评估。
有人可以告诉我该怎么做吗?我已经在 $interpolate 上查找了一些东西,但我认为 <local>
标签是 replace:true 这一事实让我很难受。有什么解决办法吗?
您应该将指令设置为 transclude 并使用内置指令来控制内部语句的计算。
看看这是否有帮助: https://docs.angularjs.org/api/ng/directive/ngTransclude
我知道怎么做了。使用上面的例子:
- 获取密钥和任何
<val>
标签的文本内容。 - 调用翻译服务以检索添加了
<val>
内容的格式字符串(用于密钥)。该值将是 "The minimum length is {{policy.minLength}} characters". - 创建一个 $watch。 'current value function' 部分在上面的值上创建一个 $interpolate() ,然后在当前范围的上下文中对其进行评估。
- 用
<span>
替换原来的<local>
标签(即相当于 'replace:true') - 每当 $watch 的值发生变化时,只需将
<span>
的 textContent 替换为新值。