角度平移 - 通过插值范围

时间:2014-07-02 14:42:51

标签: angularjs angular-translate

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

语法可以是例如

{{ 'KEY_TO_TRANSLATE' | translate:interpulationValues }}

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

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

感谢

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

这种方法很好,因为它允许您对变量名进行一些筛选(例如过滤掉以$$$开头的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];
    }
}

答案 2 :(得分:0)

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

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

{{max}}将从传入的datacontext中插入(即 durationValues

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

我们有一个视图片段,如     

{{&#39; PLAN_DETAILS:MAXIMUM_REQUIRED&#39; |翻译:$ scope。 durationValues }}

其中

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

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