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}}!'