获取a.foreach不是函数错误

时间:2015-08-24 03:40:52

标签: javascript angularjs

我正在尝试使用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>

我不知道自己做错了什么。我错了什么?

3 个答案:

答案 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小提琴代码(修复):

http://jsfiddle.net/juag4okg/

答案 2 :(得分:1)

我遇到了同样的问题。如上所述,通过创建静态json object可以很好地工作,但是当我尝试从服务器获取对象或列表时,它没有成功。 然后我意识到我的服务器没有发送json object,我也没有将其转换为json。当我把它转换为json时,它的效果非常好。

因此,如果您遇到类似的问题,从服务器端数据中显示选择选项(多个或单个),此过程可能会对您有所帮助。

这是指向angular.toJson()函数的链接。