javascript - Angularjs(选择): Show other attribute from array than the one stored in ng-model

标签 javascript angularjs select angular-ngmodel ng-options

我有一个选择输入,可以让我在这些对象之间进行选择:

$scope.items = [{"id": "0", "name": "AAA"},
                {"id": "1", "name": "BBB"},
                {"id": "2", "name": "CCC"}]

我需要存储Id,并在选择时或当Id已存储在要修改的对象中时在选择框中显示名称属性。

对象:

$scope.object

我有这个 html 代码,它将所选项目 ID 存储在 $scope.object.itemId 中,没有问题,但所选项目名称在选择或已选择时不会显示在选择输入中。

<select ng-model="object.itemId"
        ng-options="item.id as item.name for item in items track by item.id">
</select>

请注意,选择列表已正确填充项目名称。

感谢您的帮助!

最佳答案

好的,这是我从 Angularjs 开发人员那里找到的最好的解释:https://github.com/angular/angular.js/issues/6564/#issuecomment-51615589

简而言之:你不能组合 track byselect 。使用其中之一。

这是上面链接中提供的示例(为了方便起见,在此处复制):

有两种不同的用例:

<强>1。您想要一个 Shiny 的演示,但值(value)却丑陋

使用值作为标签:

items = [
  {value: 1, label: 'One'},
  {value: 2, label: 'Two'},
]

template = 'ng-options="item.value as item.label for items"'

当您更改下拉列表时,模型将被分配您在 as 前面定义的任何内容。 .

<强>2。您想要迭代复杂的对象

使用轨迹:

items = [
  {id: 1, ...},
  {id: 2, ...},
  {id: 3, ...},
]

template = 'ng-options="item as item.label for items track by items.id"'

当您更改下拉列表时,模型会被分配 itemtrack by表达式仅用于通过 value 将选项与项目关联起来。 <option> 上的属性

关于javascript - Angularjs(选择): Show other attribute from array than the one stored in ng-model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26182847/

相关文章:

javascript - 如何从 JS 文件中导出所有函数?

javascript - 按键时,jquery 循环遍历列表一次

javascript - 选择器的内部文本

MySQL - BETWEEN 将不会选择正确的结果

sql - 如何在H2中将时间转换为24小时格式

javascript - 将文件夹中的所有图像包含在数组中的最佳方法是什么?

javascript - 如何将自动调整大小脚本添加到Wordpress?

html - <td>中的<select>字段,文本过长,压垮表格

javascript - 从 ng-option 获取值

php - SQL 查询不打印 varchar/text 列