【发布时间】:2017-03-31 03:20:29
【问题描述】:
在这里,它会从 json 中显示数量。根据数量值,选择选项需要动态生成如下。
【问题讨论】:
-
反对者,请发表评论
标签: javascript html angularjs json ng-options
在这里,它会从 json 中显示数量。根据数量值,选择选项需要动态生成如下。
【问题讨论】:
标签: javascript html angularjs json ng-options
您可以使用limitTo 和ng-options 来动态显示options 的select 元素
希望我能得到你想要的。
angular.module("app", []).controller("myCtrl", function($scope) {
$scope.selectedItem = 1;
$scope.list = [1, 2, 3, 4];
$scope.quantity = 1;
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="myCtrl">
<select ng-model="quantity" ng-options="value as value for value in list"></select>
<br>
<select class="classname" ng-options="value as value for value in list | limitTo:quantity:0" ng-model="selectedItem">
<!--<option ng-repeat="item in list | limitTo:quantity:0">{{item}}</option> -->
</select>
{{selectedItem}}
</div>
【讨论】:
limitTo 是正常的内置过滤器,所以将ng-repeat 更改为ng-options。希望它会接近你的问题。
至于对问题的理解,您可以创建一个自定义过滤器来根据数量过滤掉选项。
angular.module("app",[])
.controller("ctrl",function($scope){
$scope.obj = {
"list": [
{
"quantity": [
2,
3,
4
]}
]}
})
.filter('cust',function(){
return function(item){
var arr = []
for(var i =1; i<= parseInt(item); i++){
arr.push(i)
}
return arr
}
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl">
<div ng-repeat="q in obj.list">
<div ng-repeat="i in q.quantity">
<select ng-init="q.selectval[i] = i" class="classname" ng-model="q.selectval[i]" ng-options="value as value for (key,value) in i | cust" >
</select>
{{q.selectval[i]}}
</div>
</div>
</div>
【讨论】: