【发布时间】:2016-08-22 21:17:24
【问题描述】:
我想使用 AngularJS 根据所选语言在页面标题内设置标志图标。该语言是在另一个 .htm 文件中选择的,所有这些都由 AngularJS 路由组合在一起。 我的应用程序使用一个名为“appController”的控制器。控制器被插入到“index.html”中的 body-tag 中。在“index.html”中有一个使用角度函数“setPicUrl()”。 “appLang”的值由“language.htm”中的radio-input设置,由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>
【问题讨论】:
-
如果没有适当的 plunkr,很难知道您的应用程序发生了什么,但据我所知,您只在应用程序初始化时调用
{{setPicUrl()}}一次,但在 appLang 更改时不会调用。您可以将ng-src="{{setPicUrl()}}"更改为ng-src="icons/{{appLang}}.png"。这样,您的图像 URL 将更改为存储在appLang变量中的内容。您还可以在 HTML 表单中创建一个调用setPicUrl函数的按钮,例如<input type="button" ng-click="setPicUrl()" value="Change" />
标签: javascript html angularjs routing