【问题标题】:ngOptions - How to Select an Item by Its Field?ngOptions - 如何按字段选择项目?
【发布时间】:2015-07-28 16:01:37
【问题描述】:

我有一个项目数组:

$scope.items = [{description: "Item One", id: 1}, 
                {description: "Item Two", id: 2},
                {description: "Item Three", id: 3}] 

我希望用户能够从下拉列表(ngOptions 或 typeahead)中选择 item.description,在下拉列表中显示描述,但将 id 绑定到模型。我试过这个(注意,它与 ng-if 完全相同):

typeahead="item.id as item.description for item in items"

在我看来,这似乎是说:“对于 items 中的每个项目,选择 item.id,但将其显示为项目描述。”这不起作用,一旦选择了一个项目,下拉列表/预输入将更改为 item.id 以及模型:PLNKR。我该如何防止这种情况? (注意,模型选择 id 是期望的行为,更改为 item.id/model 的 typeahead 输入字段不是。我希望它保持为 item.description)。

OdeToCode 的权威教程并没有救我。

【问题讨论】:

    标签: angularjs angular-ui-bootstrap


    【解决方案1】:

    ngOptions:

    <pre>Model: {{selected | json}}</pre>    
    <select ng-model="selected" ng-options="item.id as item.description for item in items |
             filter:$viewValue | limitTo:8" class="form-control">
    </select>
    

    http://plnkr.co/edit/nuWMSCND7U3sZoFDZ7Gh?p=preview

    提前输入:

    <pre>Model: {{selected.id | json}}</pre>
    <input type="text" ng-model="selected" typeahead="item as item.description for item in items |
    filter:$viewValue | limitTo:8" class="form-control"/>
    

    http://plnkr.co/edit/s1tJ8fwkqoJAIpXDeW2B?p=preview

    【讨论】:

    • 您是否能够让它在预输入中工作?这是我主要关心的问题。我只包含了 ngOptions,因为这是大多数人熟悉的语法的应用。
    • 我不明白,因为在我看来它会选择整个项目对象,但它有效,所以不能抱怨。谢谢你。编辑:哦,纳米,明白了。
    猜你喜欢
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2012-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多