使用Angular-Translate时,您可以传入一个用于插值的地图。
语法可以是例如
{{ 'KEY_TO_TRANSLATE' | translate:interpulationValues }}
问题是这需要我收集我想要传递给特殊对象的变量。
我想知道有一种方法可以将整个当前范围(+继承)传递给Translate,以便范围内的任何内容都可以用于插值吗?
感谢
答案 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.'
我希望这能让事情变得清晰