当前位置: 首页 > 面试题库 >

如何在使用ui-router resolve显示任何UI之前加载Angular-translate

丁学
2023-03-14
问题内容

我曾经使用angular- translate过i18n。我想将$translatePartialLoader服务用于模块化语言密钥作为延迟加载。我也想为此使用ui- router解决选项。

现在该怎么做?是否可以为我添加代码示例?

谢谢


问题答案:

我找到解决方案并解决我的问题。

在配置中:

$translatePartialLoaderProvider.addPart('index');
        $translateProvider
            .useSanitizeValueStrategy(null)
            .fallbackLanguage('en-us')
            .registerAvailableLanguageKeys(['en-us','pt-br'], {
                'en_*': 'en-us',
                'pt_*': 'pt-br'
            })
            .useLoader('$translatePartialLoader', {
                urlTemplate: '{part}/locale_{lang}.json'
            })
            .useLoaderCache(true)
            .useCookieStorage()
            .determinePreferredLanguage();

ui-router索引中:

.state('index', {
    url: '/index',
    templateUrl: 'index.html',                   
    controller:'IndexCtrl',
    resolve: {
        trans:['RequireTranslations',
            function (RequireTranslations) {
                RequireTranslations('index');
            }],
        dep: ['trans','$ocLazyLoad',
            function(trans,$ocLazyLoad){
                return $ocLazyLoad.load(['plugin']).then(
                    function(){
                        return $ocLazyLoad.load(['IndexCtrl.js']);
                    }
                );
            }]
    }
})
.state('index.users',{
    url: "/users",
    templateUrl: "users.html",
    controller:'UserListCtrl',
    resolve: {
        trans:['RequireTranslations',
            function (RequireTranslations) {
                RequireTranslations('modules/user');
            }],
        dep: ['trans','$ocLazyLoad',
            function(trans,$ocLazyLoad){
                return $ocLazyLoad.load(['UserListCtrl.js'])
            }]

    }
})

并在run

app.run(function($rootScope,$translate) {

    // translate refresh is necessary to load translate table
    $rootScope.$on('$translatePartialLoaderStructureChanged', function () {
        $translate.refresh();
    });

    $rootScope.$on('$translateChangeEnd', function() {
        // get current language
        $rootScope.currentLanguage = $translate.use();
    });
})

RequireTranslations工厂:

app.factory('RequireTranslations', function($translatePartialLoader, $translate,$rootScope) {
    return function() {
        angular.forEach(arguments, function(translationKey) {
            $translatePartialLoader.addPart(translationKey);
        });
        return $translate.refresh().then(
            function(){
                return $translate.use($rootScope.currentLanguage);
            }
        );
    };
});

并且请注意,您应该像这样在所有参数中添加$translatePartialLoadertrans作为参数controllers

app.controller('UserListCtrl',function($scope,...,$translatePartialLoader,trans){


 类似资料:
  • 问题内容: 我想知道如何在加载数据之前显示一个简单的加载器。我正在使用ng-grid-1.3.2,正在使用Google搜索,但是没有找到任何示例。再见 问题答案: 像Maxim Shoustin建议的那样,您可以使用JimLavin的angularjs-spinner,后者使用( 已弃用的)响应拦截器。 我认为这是最好的解释:http : //codingsmackdown.tv/blog/201

  • 问题内容: 我正在使用Angular UI引导模式对话框,并在服务中创建它: 从控制器或任何其他方式调用时,如何关闭所有模式实例? 问题答案: 注入服务并调用函数,有关详细信息,请参见GitHub上的代码:

  • 本文向大家介绍angular-ui-router 重新加载当前状态,包括了angular-ui-router 重新加载当前状态的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用$state.reload控制器中的方法重新加载当前状态 这是的简写(摘自官方文档的代码) 在您的状态上运行重载也会重新启动控制器并重新解析所有已解析的值。

  • 问题内容: 我正在显示由HTML表和图像组成的屏幕,而HTML表是完全动态的。 代码工作流程 当用户正在加载页面(带有URL)时,我将在不同部分呈现HTML表,这意味着该页面已加载。我一次获取所有表数据为’JSON’格式,然后在加载满表时UI的gap(Interval)中一次显示3-3行,3 seconds然后显示图像一段时间,然后再显示一次加载表并在加载表后显示图像,所以它工作正常,现在我想做的

  • 我已经成功地将swagger集成到我的项目中 现在,我可以点击URLhttp://localhost:8080/myapp/v2/api-docs,看到返回的描述REST API的json。例如。 然后我拉入了swagger-ui依赖项

  • 本文向大家介绍Angular-Ui-Router+ocLazyLoad动态加载脚本示例,包括了Angular-Ui-Router+ocLazyLoad动态加载脚本示例的使用技巧和注意事项,需要的朋友参考一下 在使用angular过程以前同事是采取一次性加载方式,在index页面一次性加载所有的js跟css,这种加载方式只适合教学和小型项目中,中大型不建议使用,加载速度影响到用户体验。 在使用了Ui