1
myFilter
に$scope.currentLanguageId
のEnglish()
またはFrance()
関数値を呼び出した後に変更されないのはなぜ?- フィルタでサイトのローカライズを行うのは通常の方法ですか?または既存のより一般的な方法かもしれません?
<div ng-init="GetList()">
<div ng-repeat="item in items | filter: myFilter">
{{item.Text}} {{item.LanguageId}}
</div>
</div>
メニュー:
<div class="menu">
<ul>
<li><a href="#/about">About</a></li>
<li><a href="#/contacts">Contacts</a></li>
<li><a>Test</a></li>
<li><a>Test</a></li>
<li><a>Test</a></li>
<li><input type="button" value="En" ng-controller="homeController" ng-click="English()" /></li>
<!--<li><a>En</a></li>
<li><a>Fr</a></li>-->
</ul>
</div>
コントローラ:私はそのためのサービスを作成し、$のrootScopeに添付します
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;
};
});
私は個人的にあなたが見てみることができると思う角度翻訳(i18n)を使用しています:https://angular-translate.github.io/ – thepio