使用 Angular-Translate 时,您可以传入要用于插值的地图。
语法可以是例如
{{ 'KEY_TO_TRANSLATE' | translate:interpulationValues }}
问题是这需要我收集我想在一个特殊对象上传递的变量。
我想知道有没有一种方法可以将整个当前范围(+ 继承)传递给 Translate,以便范围内的任何内容都可以在插值中使用?
感谢
使用 Angular-Translate 时,您可以传入要用于插值的地图。
语法可以是例如
{{ 'KEY_TO_TRANSLATE' | translate:interpulationValues }}
问题是这需要我收集我想在一个特殊对象上传递的变量。
我想知道有没有一种方法可以将整个当前范围(+ 继承)传递给 Translate,以便范围内的任何内容都可以在插值中使用?
感谢
不确定这是否是个好主意,但您应该可以这样做:
{{ '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
您可以$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];
}
}
您可以使用任何对象的点表示法:
如果我们在我们的范围内有以下对象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.'
我希望这能让事情变得清楚