angular-翻译:无法在嵌套指令中使用动态数据
angular-translate: unable to use dynamic data in nested directives
我正在使用 angular-translate 包。它为开发人员提供了不同的东西。一件事是内部插值,因此您可以在翻译字符串中使用动态数据。甚至 angular 指令。
假设我们有问候语。
'Hello {{name}}!'
在模板中这样使用:
<h3 translate="greeting" translate-values="vm.user" translate-compile></h3>
但是user.name
可能是空的。在这种情况下,我希望看到 "Hello anonymous!"。我正在尝试使用 ng-if
但它无法以预期的方式工作:
'greeting': 'Hello <span ng-if="!name">anonymous</span>{{name}}!'
如果name
为空且同时不为空,则输出"Hello anonymousJack!"。
为什么我不想将 ng-if
注入模板而不是翻译?因为根据语言的不同,名称部分的位置会有所不同。所以我想避免像
这样不明确的分解
<span translate="greeting_1"></span>
<span ng-if="vm.user.name" bind="vm.user.name"></span>
<span ng-if="!vm.user.name" translate="greeting_anomymous"></span>
<span translate="greeting_2"></span>
这看起来不清楚且令人困惑。特别是在更复杂的情况下。
我发现通过 translate-values
传递的所有数据都可以在嵌套变量 interpolateParams
中使用。所以接下来会起作用:
'greeting': 'Hello <span ng-if="!interpolateParams.name">anonymous</span>{{name}}!'
我正在使用 angular-translate 包。它为开发人员提供了不同的东西。一件事是内部插值,因此您可以在翻译字符串中使用动态数据。甚至 angular 指令。
假设我们有问候语。
'Hello {{name}}!'
在模板中这样使用:
<h3 translate="greeting" translate-values="vm.user" translate-compile></h3>
但是user.name
可能是空的。在这种情况下,我希望看到 "Hello anonymous!"。我正在尝试使用 ng-if
但它无法以预期的方式工作:
'greeting': 'Hello <span ng-if="!name">anonymous</span>{{name}}!'
如果name
为空且同时不为空,则输出"Hello anonymousJack!"。
为什么我不想将 ng-if
注入模板而不是翻译?因为根据语言的不同,名称部分的位置会有所不同。所以我想避免像
<span translate="greeting_1"></span>
<span ng-if="vm.user.name" bind="vm.user.name"></span>
<span ng-if="!vm.user.name" translate="greeting_anomymous"></span>
<span translate="greeting_2"></span>
这看起来不清楚且令人困惑。特别是在更复杂的情况下。
我发现通过 translate-values
传递的所有数据都可以在嵌套变量 interpolateParams
中使用。所以接下来会起作用:
'greeting': 'Hello <span ng-if="!interpolateParams.name">anonymous</span>{{name}}!'