Angular ng-options 如何绑定到一个 属性,而不是整个对象?

Angular ng-options how to bind to one property, not entire object?

我正在使用 ng-options 从对象数组创建 Select。这工作得很好,为了这个问题的目的,对象的内容有点不重要,只要说它们有一个名称 属性、一个值 属性 和一些其他属性就足够了.

下面是我用来创建 Select 的代码,到目前为止它运行良好。

这是我的问题 - 当一个选项被 selected 时,绑定到 ng-model 的是 "entire object" (fl)。我想绑定到 ng-model 的只是对象的 "name" (i.itemName) 部分。

我想我可以通过事后返回来解决这个问题,当按下提交按钮时,我可以遍历所有数据,找到绑定的对象,从中提取名称,然后更改它,这样就不会了绑定到名称,但是......那是相当草率的,而不是真正应该如何处理它。

有没有办法更改此代码,以便当我 select 一个项目时,ng-model 绑定到 i.itemName 而不是 fl?

<select chosen
        id="{{fl.fldBasic.fldLabel}}"
        ng-model="fl.dataValue"
        ng-readonly="{{fl.fldBasic.attrReadOnly}}"
        title="{{fl.help}}"
        ng-required="{{fl.required}}"
        class="chosen-select"
        ng-options="i.itemName for i in fl.combo_ItemList.itemList track by i.itemValue"
        style="width: 100%;">
</select>

如果您想将 ng-model 绑定到 itemName,您可以使用以下代码。请注意,您需要在此处删除 track by 才能使其正常工作,因为它将评估为未定义并且模型值将与任何选项都不匹配。

i.itemName as i.itemName for i in fl.combo_ItemList.itemList.