1

使用 Angular-Translate 时,您可以传入要用于插值的地图。

语法可以是例如

{{ 'KEY_TO_TRANSLATE' | translate:interpulationValues }}

问题是这需要我收集我想在一个特殊对象上传递的变量。

我想知道有没有一种方法可以将整个当前范围(+ 继承)传递给 Translate,以便范围内的任何内容都可以在插值中使用?

感谢

4

3 回答 3

1

不确定这是否是个好主意,但您应该可以这样做:

{{ 'KEY_TO_TRANSLATE' | translate:this}}

您还可以使用该指令直接在您的视图中构造一个对象(过滤器参数需要一个基于控制器的对象,如果我没记错的话):

<ANY translate="TRANSLATION_ID"
translate-values="{ username: someScopeObject.username }"></ANY>

http://angular-translate.github.io/docs/#/guide/06_variable-replacement

于 2014-07-02T15:17:27.337 回答
0

您可以$scope使用常规的 javascript for 循环进行循环。所有继承的属性都将存在。

这种方法很好,因为它允许您对变量名进行一些筛选(例如过滤掉以$or开头的 Angular 变量,$$以及过滤掉函数名:

$scope.varList = {};
for (var key in $scope) {
    if (key !== 'varList' && 
        key.charAt(0) !== '$' && 
        key.charAt(1) !== '$' && 
        !angular.isFunction($scope[key])) {

        $scope.varList[key] = $scope[key];
    }
}
于 2014-07-02T16:06:51.517 回答
0

您可以使用任何对象的点表示法:

如果我们在我们的范围内有以下对象durationValues并将其作为参数传递给 translate 我们可以使用 datacontext 的任何属性或子属性

{{max}} 将从传入的数据上下文中插值(即durationValues

   $scope.durationValues = {
            min: $scope.minDuration,
            **max**: $scope.maxDuration
        }

我们有一个视图片段,如

{{ 'PLAN_DETAILS:MAXIMUM_REQUIRED' | 翻译:$范围。持续时间值}}

在哪里

'PLAN_DETAILS:MAXIMUM_REQUIRED': 'The plan needs to be less than or equal to **{{max}}** weeks long.'

我希望这能让事情变得清楚

于 2016-02-12T16:15:22.150 回答