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
Javascript Angularjs语言本地化 为什么在调用myFilter中$scope.currentLanguageId的English()或France()函数后,$scope.currentLanguageId的值没有改变 通过过滤器对站点进行不同的定位是否正常?或者存在可能是更常见的方式_Javascript_Angularjs - Fatal编程技术网

Javascript Angularjs语言本地化 为什么在调用myFilter中$scope.currentLanguageId的English()或France()函数后,$scope.currentLanguageId的值没有改变 通过过滤器对站点进行不同的定位是否正常?或者存在可能是更常见的方式

Javascript Angularjs语言本地化 为什么在调用myFilter中$scope.currentLanguageId的English()或France()函数后,$scope.currentLanguageId的值没有改变 通过过滤器对站点进行不同的定位是否正常?或者存在可能是更常见的方式,javascript,angularjs,Javascript,Angularjs,名单: 我将为此创建一个服务,并将其附加到$rootScope,以便它在我的应用程序中的任何地方都可用,并且不需要在每个控制器中注入 var app = angular.module('app', []); app.run(function(langService){ langService.fetch('spanish'); }); app.controller('MainController', function(){ var vm = this; }); app.s

名单:

我将为此创建一个服务,并将其附加到$rootScope,以便它在我的应用程序中的任何地方都可用,并且不需要在每个控制器中注入

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

app.run(function(langService){

  langService.fetch('spanish');

});

app.controller('MainController', function(){

  var vm = this;

});

app.service('langService', function($rootScope){

  this.current = {};

  this.fetch = function(lang){

    //do your fetching here with $http
    $rootScope.lang = {

      ok: 'si',
      yes: 'si',
      no: 'no'

    };

  };

});
然后你可以在你的应用程序中的任何地方使用它,比如

<button>{{$root.lang.ok}}</button>
<button>{{$root.lang.no}}</button>
{{$root.lang.ok}
{{$root.lang.no}
其他值得指出的事情:

  • 你的控制器太胖了,你不应该把逻辑放在你的控制器上,逻辑应该在服务中
  • 尽可能避免使用ng init,在控制器内部执行

我个人使用了angular translate(i18n),我想您也可以看看:
app.controller('homeController', function ($scope, $http) {
    $scope.items = [];
    $scope.currentLanguageId = '';
    $scope.GetList = function () {
        $http({
            method: 'GET',
            url: '/Home/GetList',
            params: { languageId: '1'}
        }).then(function successCallback(response) {
            $.each(response.data, function (id,item) {
                $scope.items.push({ Text: item.Text, LanguageId: item.LanguageId });
            });
    }, function errorCallback(response) {
        alert('Error');
    });
    }
    $scope.English = function () {
        $scope.currentLanguageId = '2';
    }
    $scope.France = function () {
        $scope.currentLanguageId = '3';
    }
    $scope.myFilter = function (item) {
        console.log($scope.currentLanguageId);
        return item.LanguageId == $scope.currentLanguageId;
    };
});
var app = angular.module('app', []);

app.run(function(langService){

  langService.fetch('spanish');

});

app.controller('MainController', function(){

  var vm = this;

});

app.service('langService', function($rootScope){

  this.current = {};

  this.fetch = function(lang){

    //do your fetching here with $http
    $rootScope.lang = {

      ok: 'si',
      yes: 'si',
      no: 'no'

    };

  };

});
<button>{{$root.lang.ok}}</button>
<button>{{$root.lang.no}}</button>