首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Select with ng-options and array as value

Select with ng-options and array as value
EN

Stack Overflow用户
提问于 2016-08-24 17:05:51
回答 2查看 7.8K关注 0票数 2

我有以下数组:

代码语言:javascript
复制
$scope.array = [{value: ['a'], name: 'A'}, {value: ['a', 'b'], name: 'A/B'}, {value: ['a', 'b', 'c'], name: 'ABC' }];

我想在html中添加一个select,从数组中加载数据。重点是我想把键value的值作为选项的值,但它没有正确地选择默认选项。

代码语言:javascript
复制
<select class="form-control" ng-options="element as element.name for element in array track by element.value" ng-model="form.element"></select>

当我启动应用程序时,我用于ng-model的对象如下所示:

代码语言:javascript
复制
$scope.form = {element: ['a'], otherField: 'test'}

所以它应该选择数组的第一个元素作为默认值,但它不起作用。

你可以在这里找到小提琴:Fiddle

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-24 17:37:35

选项框需要包含您尝试选择的项目。由于您要将引用对象放入选项框中,因此您的选项框中必须包含与您希望在默认情况下选择的项目具有相同引用的项目。

我已经在fiddle中更新了JS

这是新的JS

代码语言:javascript
复制
function Controller($scope) {
    $scope.array = [{value: ['a'], name: 'A'}, {value: ['a', 'b'], name: 'A/B'}, {value: ['a', 'b', 'c'], name: 'ABC' }];

    $scope.form = {element: $scope.array[0]}
}
票数 3
EN

Stack Overflow用户

发布于 2016-08-24 17:59:04

使用ng- name指令时,该对象将具有所选对象的原型以及(在本例中)一个属性选项和一个属性选项

在您的示例中,类似于:{value: ['a'], name: 'A'}

所以要做的第一件事就是用这个形状的对象来设置你的ng-model,让它能够选择一个默认值:

代码语言:javascript
复制
$scope.form = {element: {value: ['a'], name: 'A'}}

然后,ng-options中的track by语法将定义select的默认值。

您不能在示例中使用属性value,因为它是一个数组,而ng-options不知道如何比较数组。ng-options可以通过id、数字或字符串来定义默认值。

我建议您使用一个像name这样的属性(如果您愿意,也可以创建一个id ),这样ng-options就可以确定默认值

代码语言:javascript
复制
<select class="form-control" ng-options="element as element.name for element in array track by element.name" ng-model="form.element"></select>

使用这两个更改,您的默认选择将运行

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39118950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档