我正在尝试使用angular js构建一个多选列表。我得到一个奇怪的TypeError:a.foreach不是一个函数,我似乎无法弄清楚何时。
js:
var myAppModule = angular.module('multiselect', []);
myAppModule.controller("view", function ($scope) {
$scope.listA = {
values: [{
id: 1,
label: 'aLabel',
subItem: {
name: 'aSubItem'
}
}, {
id: 2,
label: 'bLabel',
subItem: {
name: 'bSubItem'
}
}],
selected: {
name: 'aSubItem'
}
};
})
html:
<select multiple ng-options="item.subItem as item.label for item in listA.values track by item.id" ng-model="listA.selected"></select>
我不知道自己做错了什么。我错了什么?
答案 0 :(得分:16)
问题是,由于您添加了multiple
属性,因此select的值应该是一个数组。所以尝试类似的东西:
$scope.listA = {
values: [{
id: 1,
label: 'aLabel',
subItem: {
name: 'aSubItem'
}
}, {
id: 2,
label: 'bLabel',
subItem: {
name: 'bSubItem'
}
}],
selected: [{
name: 'aSubItem'
}]
};
答案 1 :(得分:2)
您无需按ID跟踪您的值。它会默认执行。
<div ng-controller="Main">
<select multiple ng-options="item.subItem as item.label for item in listA.values" ng-model="listA.selected"></select>
</div>
JS小提琴代码(修复):
答案 2 :(得分:1)
我遇到了同样的问题。如上所述,通过创建静态json object
可以很好地工作,但是当我尝试从服务器获取对象或列表时,它没有成功。
然后我意识到我的服务器没有发送json object
,我也没有将其转换为json
。当我把它转换为json
时,它的效果非常好。
因此,如果您遇到类似的问题,从服务器端数据中显示选择选项(多个或单个),此过程可能会对您有所帮助。
这是指向angular.toJson()
函数的链接。