如果您查看以下代码,我如何动态区分每个选择下拉列表?
如果选择,所有下拉列表都会显示相同的值。
要求是我想根据响应结构从1到10的选项值(在数组中声明)动态显示3个下拉列表 - 在这种情况下,有三个产品,因此需要显示三个动态下拉列表。
实现这一目标的有效方法是什么?
HTML
<div ng-controller="MyCtrl">
<div ng-repeat="product in colors.item">
<div ng-if="quan!=true">
<select ng-model="selectedItems.val" ng-init="selectedItems.val = selectedItems.val + ''">
<option ng-repeat="value in arr | limitTo:quantity">{{value}}</option>
</select>
</div>
</div>
<div>
<a href="#" ng-click="submit(selectedItems.val)">Submit</a>
</div>
</div>
JS
var myApp = angular.module('myApp',[]);
//myApp.directive('myDirective', function() {});
//myApp.factory('myService', function() {});
myApp.controller('MyCtrl', function MyCtrl($scope) {
$scope.colors = {"category": "students"
"item":[
{
"product":{
"name":"abc",
"age": "24"
}
"boo": true
},
{
"product":{
"name":"def",
"age": "44"
}
},
{
"product":{
"name":"ghi",
"age": "22"
}
}
]};
$scope.quan = false;
$scope.arr = [];
for(var a=1; a<=10; a++) {
$scope.arr.push(a);
}
$scope.selectedItems = {val : $scope.arr[0]};
$scope.quantity = 10;
$scope.submit = function(av){
alert(av);
}
});
答案 0 :(得分:1)
问题是您的selectedItems
一个,而colors
为 array
。
您可以在selectedItems
内colors
这样:
$scope.colors.map(function(obj) {
return obj.selectedItems = {
val: $scope.arr[0]
}
})
现在,像这样更改<select>
:
<select ng-model="product.selectedItems.val" ng-init="product.selectedItems.val = product.selectedItems.val + ''">
<option ng-repeat="value in arr | limitTo:quantity">{{value}}
</option>
</select>
而且,submit
就像:
$scope.submit = function() {
$scope.colors.forEach(function(obj) {
console.log(obj.selectedItems.val)
})
}
或者,您可以在$index
内使用ng-repeat
,使selectedItems
分开,而不是colors
答案 1 :(得分:0)
为选择元素提供唯一ID,例如id = {{$ index + 1}},以区分所有选择下拉列表。
答案 2 :(得分:-1)