【发布时间】:2016-01-05 00:11:03
【问题描述】:
我是 AngularJS 的新手,我从昨天开始学习它。
我的 HTML 代码:
<select ng-model="myImage">
<option selected disabled>Make selection</option>
<option value="earth">Earth</option>
<option value="moon">Moon</option>
<option value="sun">Sun</option>
</select>
{{myImage}}
<img ng-src="{{myImage}}">
我的 JavaScript 代码:
(function() {
app = angular.module('app', []);
app.controller("imgController", function($scope) {
function getImageIdOrName(param) {
var imageNames = ["earth", "moon", "sun"];
if (typeof param === "number") {
return imageNames[param - 1];
}
if (typeof param === "string") {
for (var i = 0; i <= imageNames.length; i++) {
if (imageNames[i] == param) {
return pad((i+1), 3);
}
}
}
}
function pad(number, length) {
var str = '' + number;
while (str.length < length) {
str = '0' + str;
}
return str;
}
$scope.myImage = "img/" + getImageIdOrName($scope.myImage) + "png";
});
}());
我正在尝试显示在<select> 标签中选择的图像,图像的命名如下:
001.png(地球)002.png(月亮)003.png(太阳)
我知道我可以解决这个问题,方法是:
<select ng-model="myImage">
<option selected disabled>Make selection</option>
<option value="001">Earth</option>
<option value="002">Moon</option>
<option value="003">Sun</option>
</select>
<img ng-src="img/{{myImage}}.png">
但我真正想做的是在<option> 的值中传递名称而不是图像ID,然后我想使用我的getImageIdOrName(param) 函数将名称转换为ID 并将ID 用于<img>标签的src 属性。
我尝试在我的控制器中执行以下操作:$scope.myImage = "img/" + getImageIdOrName($scope.myImage) + "png";
但这似乎不起作用,ng-model 正在返回 <option> 的选定值而不是做$scope.myImage = "img/" + getImageIdOrName($scope.myImage) + "png";
谁能告诉我我做错了什么并告诉我解决方案?
【问题讨论】:
-
你能把你的代码放到 plunker 里吗?
-
我会试试的,我之前没用过。
-
那么你要硬编码选项吗?
-
@ShamalPerera 是的,但我希望
-
我不知道如何将图片上传到 Plunker。
标签: angularjs select angularjs-ng-model