Angular select 在提交表单之前显示带有每个选项的图像
Angular select display image with each option before submitting form
更新:已解决!请看下面我的回答。
我正在尝试使用 Angular 中的每个 select 选项显示不同的图像。当用户单击菜单中的每个选项时,菜单旁边会出现不同的图像。所有这些都是在提交表单之前。基本上是尝试在 fiddle 中执行这里所做的操作,但在 Angular 中:http://jsfiddle.net/treyh/xf2pq/
html:
Current image: {{myCar.url}}
<br>
<select ng-model="myCar" class="form-control">
<option value="">Choose a car...</option>
<option ng-repeat="car in cars" value="{{car}}" data-image = "{{car.url}}">{{car.label}}</option>
</select>
在控制器内部的js文件中:
$scope.cars = [
{url: 'Volvo.png', label: 'Volvo'},
{url: 'Benz.png', label: 'Benz'},
{url: 'JohnDeer.png', label: 'John Deer'},
{url: 'BMW.png', label: 'BMW'},
];
Select Angular 中的输入一开始有点令人困惑,但这里有一种设置方法。
angular
.module('app',[])
.controller('AppCtrl',AppCtrl);
function AppCtrl() {
var vm = this;
vm.car_image = null;
vm.cars = [
{
'url':'audi.jpg',
'name':'Audi'
},
{
'url':'bmw.jpg',
'name':'BMW'
}
]
}
<div ng-controller="AppCtrl as ctrl">
<select ng-model="ctrl.car_image" ng-options="c.url as c.name for c in ctrl.cars" class="form-control"></select>
<hr>
<img ng-src="images/{{ctrl.car_image}}" ng-show="ctrl.car_image">
</div>
使用 ng-src 将在页面加载时防止最初出现 404 错误。因此,当您 select 您需要的选项时,来自 select 输入的 ng-model 将应用于图像标签。
我已经想出如何使用 ng-repeat 和 $Scope 来做到这一点。
在控制器内部的js文件中:
$scope.cars = ['Volvo', 'Benz', 'Toyota'];
$scope.myCar = "";
var carURL = {
Volvo: 'volvo.png',
Benz: 'benz.png',
Toyota: 'toyota.png'
};
$scope.getCarURL = function(brand) {
return carURL[brand];
}
并在 html 中:
<select ng-model="myCar">
<option ng-repeat="car in cars" value="{{car}}">{{car}}</option>
</select>
<img ng-src="{{getCarUrl(myCar)}}">
更新:已解决!请看下面我的回答。
我正在尝试使用 Angular 中的每个 select 选项显示不同的图像。当用户单击菜单中的每个选项时,菜单旁边会出现不同的图像。所有这些都是在提交表单之前。基本上是尝试在 fiddle 中执行这里所做的操作,但在 Angular 中:http://jsfiddle.net/treyh/xf2pq/
html:
Current image: {{myCar.url}}
<br>
<select ng-model="myCar" class="form-control">
<option value="">Choose a car...</option>
<option ng-repeat="car in cars" value="{{car}}" data-image = "{{car.url}}">{{car.label}}</option>
</select>
在控制器内部的js文件中:
$scope.cars = [
{url: 'Volvo.png', label: 'Volvo'},
{url: 'Benz.png', label: 'Benz'},
{url: 'JohnDeer.png', label: 'John Deer'},
{url: 'BMW.png', label: 'BMW'},
];
Select Angular 中的输入一开始有点令人困惑,但这里有一种设置方法。
angular
.module('app',[])
.controller('AppCtrl',AppCtrl);
function AppCtrl() {
var vm = this;
vm.car_image = null;
vm.cars = [
{
'url':'audi.jpg',
'name':'Audi'
},
{
'url':'bmw.jpg',
'name':'BMW'
}
]
}
<div ng-controller="AppCtrl as ctrl">
<select ng-model="ctrl.car_image" ng-options="c.url as c.name for c in ctrl.cars" class="form-control"></select>
<hr>
<img ng-src="images/{{ctrl.car_image}}" ng-show="ctrl.car_image">
</div>
使用 ng-src 将在页面加载时防止最初出现 404 错误。因此,当您 select 您需要的选项时,来自 select 输入的 ng-model 将应用于图像标签。
我已经想出如何使用 ng-repeat 和 $Scope 来做到这一点。
在控制器内部的js文件中:
$scope.cars = ['Volvo', 'Benz', 'Toyota'];
$scope.myCar = "";
var carURL = {
Volvo: 'volvo.png',
Benz: 'benz.png',
Toyota: 'toyota.png'
};
$scope.getCarURL = function(brand) {
return carURL[brand];
}
并在 html 中:
<select ng-model="myCar">
<option ng-repeat="car in cars" value="{{car}}">{{car}}</option>
</select>
<img ng-src="{{getCarUrl(myCar)}}">