ui-选择特定对象属性的搜索

时间:2016-10-18 14:28:42

标签: angularjs angular-filters ui-select

我可以在ui-select上对我对象的特定字段中的搜索进行过滤吗?或者我应该创建自定义过滤器?我已经看到了这个answer并且它说它有效,但是我的以下代码无效:

<ui-select ng-model="model.selected">
    <ui-select-match>
        <span class="ng-cloak">{{$select.selected.id ? $select.selected.id+ ' (' + $select.selected.sn + ') ' : "Select One" }}</span>
    </ui-select-match>
    <ui-select-choices repeat="item in items | filter: {id: $select.search.id, sn: $select.search.sn}">
        <span ng-bind="(item.id) + ' (' + (item.sn)  + ') ' "></span>
    </ui-select-choices>
</ui-select>

1 个答案:

答案 0 :(得分:1)

假设item中的每个items都具有以下属性:

  • ID
  • SN
  • FN

给出以下数据集:

[ 
    {"id":"Ja111", "sn":"Jacobs","fn":"Jim"},
    {"id":"Ja222", "sn":"Jagger","fn":"Robert"},
    {"id":"Jo111", "sn":"Jones","fn":"Stan"},
    {"id":"J111", "sn":"Johnson","fn":"Alfred"},
    {"id":"Sm111", "sn":"Smith","fn":"Joe"}
]

使用:

<ui-select-choices repeat="item in items | filter: {id: $select.search, sn: $select.search}">

将执行&#34;和&#34;对指定字段的操作(在这种情况下为idsn)(例如搜索条件&#34; Jo&#34;只会找到&#34; Stan Jones&#34;)

使用:

<ui-select-choices repeat="item in items | filter: $select.search">

将执行&#34;或&#34;跨所有领域的操作(例如搜索标准&#34; Jo&#34;将找到&#34; Stan Jones&#34;,&#34; Alfred Johnson&#34;&#34; Joe Smith&#34;)< / p>

使用:

<ui-select-choices repeat="item in items | propsFilter: {id: $select.search, sn: $select.search}">

将执行&#34;或&#34;对指定字段(在这种情况下为idsn)的操作(例如搜索条件&#34; Jo&#34;将找到&#34; Stan Jones&#34;和&#34;阿尔弗雷德·约翰逊&#34; - 请注意,由于过滤器没有查看fn字段,因此无法找到&#34; Joe Smith&#34;

以下Plunkr显示了上述示例。

根据您的要求(我假设您需要&#34;或&#34;过滤器,但仅限于特定字段)我沿着propsFilter路线前进。这似乎也是ui-select Basic Demo使用的内容。