我正在使用 AngularJS 并创建了一个模块,其中有一个工厂和一个过滤器。 Factory 获取本地 json 文件(翻译),过滤器提供返回文本翻译版本的函数。所以代码如下所示;
angular
.module('i18n', [])
.factory('translationDataFact', ['$http', function($http){
var t = {};
var user = {};
t.defaultLanguage = 'en-GB';
t.languageFile = null;
t.init = function(){
t.setLanguage();
if(!t.languageFile){
$http
.get('translations/' + t.defaultLanguage + '.json')
.success(function(data){
t.languageFile = data.strings;
})
.error(function(error){
console.log(error);
});
}
}
t.setLanguage = function(){
/* change default language to User language here */
if(user.id){
t.defaultLanguage = user.language;
}
return t.defaultLanguage;
}
t.init();
return t.languageFile;
}])
.filter('t', ['translationDataFact', function (translationDataFact) {
var translate = function (stringIdenitfier) {
var translation = translationDataFact.languageFile[stringIdenitfier];
if(translation){
return translation;
}
return "translate me!!";
};
return translate(stringIdenitfier);
}]);
然后我希望使用过滤器来翻译这样的变量和名称
{{"string" | t }}
我遇到的问题是我不知道如何确保
- Factory 的返回值在 Filter 运行之前设置。
- 此外,我对如何阻止整个应用程序渲染直到此过滤器准备就绪感到困惑?
任何帮助都会很棒,因为我迷路了:(
最佳答案
您不使用现有的 AngularJS 翻译库(如angular-translate)有什么原因吗? ?
关于javascript - Angular 工厂和过滤器 $http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26636742/