Javascript Angularjs语言本地化 为什么在调用myFilter中$scope.currentLanguageId的English()或France()函数后,$scope.currentLanguageId的值没有改变 通过过滤器对站点进行不同的定位是否正常?或者存在可能是更常见的方式
名单: 我将为此创建一个服务,并将其附加到$rootScope,以便它在我的应用程序中的任何地方都可用,并且不需要在每个控制器中注入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
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,在控制器内部执行
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>