ui-select 搜索特定对象属性
ui-select search on specific object properties
我可以在 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>
假设items
中的每个item
具有以下属性:
- 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}">
将对指定字段执行 "and" 操作(在本例中为 id
和 sn
)(例如,搜索条件 "Jo" 将仅查找 "Stan Jones")
使用:
<ui-select-choices repeat="item in items | filter: $select.search">
将对所有字段执行 "or" 操作(例如,搜索条件 "Jo" 将查找 "Stan Jones"、"Alfred Johnson" 和 "Joe Smith")
使用:
<ui-select-choices repeat="item in items | propsFilter: {id: $select.search, sn: $select.search}">
将对指定字段(在本例中为 id
和 sn
)执行 "or" 操作(例如,搜索条件 "Jo" 将找到 "Stan Jones" 和 "Alfred Johnson" - 注意它不会找到 "Joe Smith" 因为过滤器没有查看 fn
字段)
下面的Plunkr显示了上面的例子。
根据您的要求(我假设您需要一个 "or" 过滤器,但仅限于特定字段)我会选择 propsFilter
路线。这似乎也是 ui-select Basic Demo 使用的。
我可以在 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>
假设items
中的每个item
具有以下属性:
- 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}">
将对指定字段执行 "and" 操作(在本例中为 id
和 sn
)(例如,搜索条件 "Jo" 将仅查找 "Stan Jones")
使用:
<ui-select-choices repeat="item in items | filter: $select.search">
将对所有字段执行 "or" 操作(例如,搜索条件 "Jo" 将查找 "Stan Jones"、"Alfred Johnson" 和 "Joe Smith")
使用:
<ui-select-choices repeat="item in items | propsFilter: {id: $select.search, sn: $select.search}">
将对指定字段(在本例中为 id
和 sn
)执行 "or" 操作(例如,搜索条件 "Jo" 将找到 "Stan Jones" 和 "Alfred Johnson" - 注意它不会找到 "Joe Smith" 因为过滤器没有查看 fn
字段)
下面的Plunkr显示了上面的例子。
根据您的要求(我假设您需要一个 "or" 过滤器,但仅限于特定字段)我会选择 propsFilter
路线。这似乎也是 ui-select Basic Demo 使用的。