我正在尝试在我的角度应用程序中使用一次性绑定来提高性能。所以我想使用下一个方式的angular-translate:
//This code does not work.
function myCtrl($translate){
$scope.DESCRIPTION = $translate.instant('DESCRIPTION');
}
//I should use a timeout of next way:
//This code does work.
function myCtrl($translate){
setTimeout(function(){
$scope.DESCRIPTION = $translate.instant('DESCRIPTION');
}, 1000);
}

<p> {{::DESCRIPTION}} </p>
&#13;
如何检测语言json文件的加载时间? 我不想使用setTimeouts。
我希望你理解我
谢谢!
答案 0 :(得分:4)
检查此解决方案:
function loadTexts(scope, ids) {
$translate.onReady(function() {
var size = ids.length;
for (var i = 0; i < size; i++) {
var id = ids[i];
scope[id] = $translate.instant(id);
}
});
};
function myCtrl($scope){
loadTexts($scope, ['DESCRIPTION', 'HEADER_TEXT']);
}
&#13;
<p> {{::HEADER_TEXT}} </p>
<p> {{::DESCRIPTION}} </p>
&#13;
答案 1 :(得分:1)
以下代码段来自docs
app.controller('Ctrl', ['$scope', '$translate', function ($scope, $translate) {
$translate('HEADLINE').then(function (headline) {
$scope.headline = headline;
});
$translate('PARAGRAPH').then(function (paragraph) {
$scope.paragraph = paragraph;
});
$translate('NAMESPACE.PARAGRAPH').then(function (anotherOne) {
$scope.namespaced_paragraph = anotherOne;
});
}]);
在你的情况下,这应该这样做。
function myCtrl($scope, $translate){
$translate('DESCRIPTION').then(function (description) {
$scope.DESCRIPTION = description;
});
}
尽管使用Angular-Translate是最简单的方法,但是使用像这样的过滤器。 (docs)
<p>{{'DESCRIPTION' | translate}}</p>
答案 2 :(得分:0)
如果您需要在控制器中翻译字符串,而不是注入服务,则应直接注入过滤器...
在角度1. +中,您可以使用Filter suffix
注入过滤器。
function MyCtrl(translateFilter) { console.log(translateFilter('mystring')); }
这应该为您提供加载所有过滤依赖项的安全性。