我正在尝试使用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是否有任何限制?或者我想在这里改变什么?
答案 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 }});
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;