Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 通过两个控制器之间的筛选器共享服务不会';t在角度1.3.x下工作_Angularjs_Migration - Fatal编程技术网

Angularjs 通过两个控制器之间的筛选器共享服务不会';t在角度1.3.x下工作

Angularjs 通过两个控制器之间的筛选器共享服务不会';t在角度1.3.x下工作,angularjs,migration,Angularjs,Migration,好的,伙计们,我很确定它被记录在某个地方,但我似乎找不到它,这就是为什么我提前道歉,如果它已经被讨论过的话 我试图通过不同控制器/指令等的过滤器共享本地化服务。 在angular 1.2.x中,它是工作的,但在1.3.x中它不工作 看 取消对脚本的注释以在1.2.x/1.3.x之间切换 var app = angular.module('plunker', []); app.service('trnsService', ['$rootScope', function($rootScope)

好的,伙计们,我很确定它被记录在某个地方,但我似乎找不到它,这就是为什么我提前道歉,如果它已经被讨论过的话

我试图通过不同控制器/指令等的过滤器共享本地化服务。 在angular 1.2.x中,它是工作的,但在1.3.x中它不工作

看 取消对脚本的注释以在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);
    }
  });

找到了。将筛选器设置为$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;
    }
  ])

这里有更多信息:

这里呢