2014-12-03 42 views
0

好男人我很確定它記錄在某處,但我似乎無法找到它,這就是爲什麼我提前道歉,如果它已被討論。通過兩個控制器之間的過濾器共享服務在角度1.3.x中不起作用

我試圖通過不同的控制器/指令等通過過濾器共享本地化服務。 在角1.2.x它工作,但在1.3.x它沒有。

參見plunkr 取消對腳本的1.2.x/1.3.x中找到它之間

var app = angular.module('plunker', []); 

app.service('trnsService', ['$rootScope', 
    function($rootScope) { 
    var trnsService = {}, 
     trns = { 
     'CONSTANT': { 
      'en': 'En text', 
      'bla': 'Bla text' 
     } 
     }, 
     lan = 'en'; 

    trnsService.setLang = function setLang(lang) { 
     lan = lang; 

     console.log(lan); 

     if (!$rootScope.$$phase) { 
     $rootScope.$apply(); 
     } 
    }; 

    trnsService.getTrns = function getTrns(key) { 
     return trns[key][lan] 
    }; 
    return trnsService; 
    } 
]) 
    .filter('trns', ['trnsService', 
    function(trnsService) { 
     return function(input) { 
     return trnsService.getTrns(input); 
     }; 
    } 
    ]) 
    .controller('MainCtrl', function($scope, trnsService) { 
    $scope.setLang = function setLang(lg) { 

     trnsService.setLang(lg); 
    } 
    }) 
    .controller('SecCtrl', function($scope, trnsService) { 
    $scope.setLang = function setLang(lg) { 

     trnsService.setLang(lg); 
    } 
    }); 

回答

0

切換。將過濾器設置爲$ stateful爲我做了。只是希望,我發現它早,還沒有失去整個一天就可以了...

.filter('trns', ['trnsService', 
    function(trnsService) { 
     // return function(input) { 
     // return trnsService.getTrns(input); 
     // }; 
     function decorateFilter(input) { 
     return trnsService.getTrns(input); 
     } 
     decorateFilter.$stateful = true; 
     return decorateFilter; 
    } 
    ]) 

plunkr

一些更多的信息在這裏:

https://github.com/angular-translate/angular-translate/issues/720

這裏

https://docs.angularjs.org/guide/filter

相關問題