AngularJSを使用して、選択した言語に応じて、ページのヘッダーの内側にフラグアイコンを設定します。言語は別の.htmファイルで選択され、そのすべてがAngularJSルーティングによってまとめられています。 私のアプリケーションでは、「appController」という名前のコントローラが1つ使用されています。コントローラーは "index.html"のbody-tagに挿入されます。 "index.html"の内部には、角度関数 "setPicUrl()"を使用する関数があります。 "appLang"の値は "language.htm"のラジオ入力で設定され、AngularJSによるルーティングを使用して挿入されます。AngularJS:ルーティングの使用中に変数値を更新する方法
問題は、別の言語(変数「appLang」)を選択すると、フラグアイコンのパスが変更されないということです。アプリケーションを起動するとアイコンが正しく読み込まれます。
routing.js
var app = angular.module("angApp", ["ngRoute"]);
app.config(function ($routeProvider) {
$routeProvider
.when("/visualization", {
templateUrl: "htm/visualization.htm",
controller: "appController"
})
.when("/data", {
templateUrl: "htm/data.htm",
controller: "appController"
})
.when("/social", {
templateUrl: "htm/social.htm",
controller: "appController"
})
.when("/about", {
templateUrl: "htm/about.htm",
controller: "appController"
})
.when("/language", {
templateUrl: "htm/language.htm",
controller: "appController"
});
});
controller.js
app.controller("appController", function ($scope, $http, $location) {
$scope.appLang = "english";
$scope.setPicUrl = function() {
if ($scope.appLang === "german") {
return "icons/german.png";
} else if ($scope.appLang === "english") {
return "icons/english.png";
} else {
//TODO Error handling
return;
}
};
index.htmlを
<body ng-app="angApp" ng-controller="appController">
...
<li ng-class="{ active: headerIsActive('/language')}"><a href="#language"><img id="langpic"
ng-src="{{setPicUrl()}}"
class="img-responsive"></a>
...
<div ng-view></div>
</body>
language.htm
<div class="panel panel-default">
<div class="panel-heading">Spracheinstellungen</div>
<div class="panel-body">
<form>
Wählen Sie ihre Sprache aus:
<br/>
<input type="radio" ng-model="appLang" value="german">Deutsch
<br/>
<input type="radio" ng-model="appLang" value="english">Englisch
</form>
</div>
</div>
それがなくてもアプリで何が起こっているのかを知るのは難しい:(headerController使用して)ヘッダ内のフラグアイコンを表示するための
HTML:言語(langControllerを使用)を変更するためのHTML私が集めるものからは、アプリケーションが初期化されるときに '{{setPicUrl()}} 'を一度呼び出すだけですが、appLangが変更されるときは呼び出されません。 'ng-src =" {{setPicUrl()}} "'を 'ng-src =" icons/{{appLang}} .png "'に変更することができます。このようにして、画像URLは 'appLang'変数に格納されているものに変更されます。例えば 'setPicUrl'関数を呼び出すHTMLフォームでボタンを作成することもできます。 '' –