如何在同一个 ui-select 字段上同时应用 filter:$select.search 和 limitTo:$select.infiniteCurrentLimit?

How to apply both filter:$select.search and limitTo:$select.infiniteCurrentLimit on the same ui-select field?

我有 ui-select 字段正在使用无限滚动功能,因为它可能有大量选项,但由于选项太多,向下滚动查找会很累所需的选项。

<ui-select-choices 
    infinite-scroll="$select.infiniteStepIncrement()"
    infinite-scroll-distance="2"
    infinite-step="2"
    current-limit="10"
    all-options="app.bigList"
    repeat="option.id as option in app.bigList | limitTo: $select.infiniteCurrentLimit">
    <span ng-bind-html="option.value"></span>
</ui-select-choices>

所以我决定在其上实施过滤器:$select:search。它过滤了选项,但它取消了可滚动的功能。

<ui-select-choices 
    infinite-scroll="$select.infiniteStepIncrement()"
    infinite-scroll-distance="2"
    infinite-step="2"
    current-limit="10"
    all-options="app.bigList"
    repeat="option.id as option in app.bigList | filter: $select.search | limitTo: $select.infiniteCurrentLimit">
    <span ng-bind-html="option.value"></span>
</ui-select-choices>

有什么我可以做的让他们能够一起工作吗?

经过大量谷歌搜索和反复试验后找到了解决方案。 我只是将 app.bigListfilter 分组,这样它将 return 作为一个已经过滤的列表供 limitTo 处理。有点像PEMDAS的作品。

repeat="option.id as option in (app.bigList | filter: { value: $select.search }) | limitTo: $select.infiniteCurrentLimit">