Angular-translate : 更改语言时如何刷新内容(api 请求)?

Angular-translate : How can I refresh content (api request) when I change language?

我是 AngularJS 的新手,我试图了解如何使用它。我正在使用 angular-translate 来翻译我的网站并且它可以工作,但我对数据库中的动态内容有疑问。

我通过 api 请求获取动态内容。我想 "redo" 使用正确语言的请求,以使用正确语言重新加载内容。

我捕获了 "translateChangeSuccess" 事件,但我如何才能 "redo" 之前的 api 请求?

非常感谢您的帮助:) ps : 对不起我的英语

编辑:

// my run block :

(function ()
{
    'use strict';

    angular
        .module('fuse')
        .run(runBlock);


    function runBlock($rootScope, $timeout, $state, $cookieStore)
    {   

        $rootScope.$on('$translateChangeSuccess', function () {

          // catch translateChangeSuccess event
          // redo the previous api request

        });

     }

})();

// my change language function 

      /**
       * Change Language
       */
      function changeLanguage(lang)
      {
          angular.forEach(vm.languages, function(value, key) {

              if (lang.code == key)
                  $translate.use(lang.code); // launch translateChangeSuccess event
          });
      }

 // my api service

 function apiService($http, $resource, $translate, CONFIG_API)
    {
        // change header with good language 
        $http.defaults.headers.common["Accept-Language"] = $translate.proposedLanguage();

        var api = {};

        // Base Url
        api.baseUrl = CONFIG_API.base_url;

        // request to reload when user changes language
        api.Documents = $resource(api.baseUrl + 'documents/:id', 
            {id: '@id'},
            {update: {method: 'PUT'}}
        );
        ...
    }

translateChangeSuccess 事件中使用所需语言的当前参数再次请求(暗示服务器会根据语言向您发送不同的内容)

我不能给你一个具体的例子,因为有很多方法可以管理它。

用一些代码你可以有更好的解释。

好的,所以我找到了如何做到这一点。我只是通过 service (apiResolver)

再次向 api 请求数据

test.module.js :

(function ()
{
    'use strict';

    angular
        .module('app.test_module', [])
        .config(config);

    /** @ngInject */
    function config($stateProvider, msApiProvider)
    {
        // State
        $stateProvider.state('app.test_module', {
            url      : '/myurl',
            views    : {
                'content@app': {
                    templateUrl: 'mytemplate.html',
                    controller : 'MyController as vm'
                }
            },
            resolve  : {
                test : function (apiResolver) 
                {
                    return apiResolver.resolve('myquery@query');
                }
            }
        });

    }

})();

和test.controller.js:

(function ()
{
    'use strict';

    angular
        .module('app.test_module')
        .controller('testController', testController);

    /** @ngInject */
    function testController($rootScope, apiResolver, dataToDisplay)
    {
        var vm = this;

        // Data
        vm.dataToDisplay = dataToDisplay;

        $rootScope.$on('$translateChangeSuccess', function () {
           // reload my content
            apiResolver.resolve('myquery@query')
            .then(function(result) {
                vm.dataToDisplay = result;
            });
        });
      }

      // more code here but not usefull in this example
 })();

也许有更好的方法但它有效,当用户更改语言时我的数据会被翻译 :)