我有一个 Angular JS 应用程序,它为 i18n 使用 angular-translate。这个应用程序还使用 highcharts.js 显示图表。我在 highcharts-ng 之上构建了一个自定义指令,它允许我将对象文字作为表达式传递,然后用于配置图表的轴:
angular.module('myApp')
.directive('xxChart', function() {
return {
transclude: true,
template: '<highchart id=id config=config ng-transclude>',
restrict: 'E',
scope: {
id: '=',
title: '=',
xxXAxis: '=',
xxYAxis: '='
},
controller: function($scope) {
$scope.config = {
options: {
chart: {
lineWidth: 10
},
xAxis: $scope.xxXAxis,
yAxis: $scope.xxYAxis,
plotOptions: {
spline: {
lineWidth: 3
},
area: {
lineWidth: 3
}
}
},
series: [],
title: {
text: $scope.title
}
};
this.addSeries = function(name) {
var series = {
name: name,
data: []
};
$scope.config.series.push(series);
return series;
};
}
};
});
我使用这样的指令:
<xx-chart xx-x-axis="{title: {text: 'My x axis'}}">
...
</xx-chart>
现在我想翻译我的应用程序。我注意到这显然行不通:
<xx-chart xx-x-axis="{title: {text: 'My x axis' | translate}}">
...
</xx-chart>
有没有办法在对象文字中使用翻译过滤器?如果没有,我应该如何在坚持角度架构的同时解决我的问题?
另请注意,我无法以中断传递包含其他非翻译字段的对象文字的方式更改指令的语义。
最小示例小提琴在这里:http: //jsfiddle.net/Ssn53