javascript - Angular 工厂和过滤器 $http

标签 javascript angularjs

我正在使用 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 }}

我遇到的问题是我不知道如何确保

  1. Factory 的返回值在 Filter 运行之前设置。
  2. 此外,我对如何阻止整个应用程序渲染直到此过滤器准备就绪感到困惑?

任何帮助都会很棒,因为我迷路了:(

最佳答案

您不使用现有的 AngularJS 翻译库(如angular-translate)有什么原因吗? ?

关于javascript - Angular 工厂和过滤器 $http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26636742/

相关文章:

javascript - Angular ngOptions 切片或椭圆

javascript - 打破带有 lint 问题的下划线循环

php - 将条目插入数据库后如何更新模型?并刷新 View

angularjs - 按谓词过滤表

axapta 2009 中 ssrs 报告中的 javascript 错误

javascript - 使用 d3 加载 csv 文件后范围未更新

javascript - Bootstrap 获取字形代码

javascript - 为什么 jQuery 的 .animate() 在完成动画之前运行 "complete"函数?

javascript - Bootstrap 如何通过 DOM 更改通知?

javascript - jQuery:获取第一行中具有特定类的第一个单元格?