我在当前项目中使用角翻译进行本地化。我在翻译动态菜单时遇到了一个问题。以下是实现
的详细信息我有一个静态菜单嵌入在html页面如下:
<a>{{'INTRODUCTION' | translate}}</a>
Angular translate在翻译后的文本中工作得很好。但是在这个静态菜单下面,我有一个ul标签
在这个ul标签中,我正在加载使用javascript创建的动态菜单,但链接文本为{{"INTRODUCTION" | translate}}
。
但这没有被翻译,链接显示为{{"INTRODUCTION" | translate}}
而不是翻译文本。
我们需要为动态菜单做些什么吗?
您需要$compile
:
var myApp = angular.module('myApp',[]);
myApp.directive('test', function($compile) {
return function($scope, element, attrs) {
$scope.buddy = 'Tom';
var paragraph = $('<p>Hello, {{ buddy }}</p>');
var uncompiled = paragraph.clone();
var compiledParagraph = $compile(paragraph)($scope);
element.append(uncompiled);
element.append(compiledParagraph);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.3/angular.js"></script>
<body ng-app="myApp">
<div test>
</div>
</body>
$compile
将生成的DOM链接到作用域,从而能够处理Angular的特性,比如表达式和过滤器。