使用AngularJS嵌套花括号

时间:2013-09-17 08:17:57

标签: angularjs angularjs-directive angularjs-filter

我目前正在使用angular-translate开展项目。我的目标是创建一个翻译地图,允许开发人员在不破坏翻译的情况下更改对象模型。

例如,假设我在我的范围内保存了一个订单:

$scope.order = {
    numberOfItems: 5,
    // ...
};

带有显示项目数量的属性的翻译地图:

var translationsEN = {
    itemsNumber: "{{numberOfitems}} item(s)",
    // ...
};

var translationsFR = {
    itemsNumber: "{{numberOfItems}} article(s)",
    // ...
};

通过这张地图,我可以很容易地做到这一点:

{{'itemsNumber' | translate:order}}

但是如果开发人员想要更改numberOfItems属性的名称,他也必须更改翻译地图,这非常讲究......所以,我改变了我的翻译地图为此:

var translationsEN = {
    itemsNumber: "{{number}} item(s)",
    // ...
};

var translationsFR = {
    itemsNumber: "{{number}} article(s)",
    // ...
};

现在,开发人员只需传输一个包含必要值的简单对象,如下所示:

<span translate="order.misc.itemsNumber"
       translate-values="{ number:{{order.numberOfItems}} }">
</span>

但是,正如您所看到的,我不再使用过滤器而是使用指令。我无法找到办法做这样的事情:

{{'order.misc.itemsNumber' | translate:'{ number:{{order.numberOfItems}} }'}}

这不起作用:

{{'order.misc.itemsNumber' | translate:'{ number:order.numberOfItems }'}}

是否有任何解决方案允许我使用过滤器,还是应该使用指令?

1 个答案:

答案 0 :(得分:0)

尝试不加引号:

{{'order.misc.itemsNumber' | translate: {number: order.numberOfItems}}}