我有一个选择输入,可以让我在这些对象之间进行选择:
$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 by
与 select
。使用其中之一。
这是上面链接中提供的示例(为了方便起见,在此处复制):
有两种不同的用例:
<强>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"'
当您更改下拉列表时,模型会被分配 item
。 track by
表达式仅用于通过 value
将选项与项目关联起来。 <option>
上的属性
关于javascript - Angularjs(选择): Show other attribute from array than the one stored in ng-model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26182847/