循环遍历Angularjs中的ng-options

时间:2017-10-06 11:40:56

标签: javascript angularjs

我正在尝试使用Angularjs中的ng-options在选择框内推送一组值。

车把:

<div class="col-md-8">
    <select ng-options="item as item.label for item in items track by 
    item.id" ng-model="selected">
        <option></option>
    </select>
</div>

控制器:

var app = angular.module('myapp', []);

app.controller('mycontroller', function($scope) {

$scope.arealistArray=[];
$scope.items=[]; 

for(j=1;j<3;j++){
    $scope.arealistArray.push([{id: 'id'+j,label: 'aLabel'+j,subItem: { 
    name: 'aSubItem'+j }}]);
} 

$scope.items = $scope.arealistArray;

我的选项会附加在选择框中,但附加选项的标签未定义。在ng-options中使用push是否有任何限制?或者我想在这里改变什么?

2 个答案:

答案 0 :(得分:1)

您正在推送另一个数组中的数组。你应该删除“[]”。

$scope.arealistArray.push({
  id: 'id' + j,
  label: 'aLabel' + j,
  subItem: {
    name: 'aSubItem' + j
  }
});

根据您的代码,这是working fiddle

答案 1 :(得分:1)

$scope.arealistArray.push([{id: 'id'+j,label: 'aLabel'+j,subItem: { 
name: 'aSubItem'+j }}]);

如果它像上面那样你需要指定索引或者

 ng-options="item as item.label for item in items[0] track by item.id"

如果它的对象在执行推送时删除[]。

$scope.arealistArray.push({id: 'id'+j,label: 'aLabel'+j,subItem: { 
name: 'aSubItem'+j }});

&#13;
&#13;
var app = angular.module('myapp', []);

app.controller('mycontroller', function($scope) {

$scope.arealistArray=[];
$scope.items=[]; 

for(j=1;j<3;j++){
    $scope.arealistArray.push({id: 'id'+j,label: 'aLabel'+j,subItem: { 
    name: 'aSubItem'+j }});
} 

$scope.items = $scope.arealistArray;
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp" ng-controller="mycontroller" class="col-md-8">
    <select  ng-options="item as item.label for item in items track by 
item.id" ng-model="selected">
        <option></option>
    </select>
</div>
&#13;
&#13;
&#13;