我正在使用Angular UI-Select进行查找,但是当集合变得越来越长时,性能会很糟糕。
为了克服这个问题,我设置了一个限制在我的repeat
上过滤(15 个项目),这是一个可行的选项,但我现在面临的问题是,当我加载页面并且我的ng-model
中的值在第一个让我们说 15 个项目在我的重复中,我最终会得到一个空的下拉列表。我知道这是一个问题,并且在 github 上存在关于它的未决问题,但我希望有人可以对此有所了解,或者可以告诉我一个可行的解决方案......如果这意味着要更改UI-Select的javascript,我愿意承担风险,因为我不知道UI-Select团队很快就会修复它......
我使用的 UI-Select 版本是0.12.1
几天后,尝试了很多不同的方法来让我的预加载与限制工作。我决定构建自己的自定义限制过滤器。
这个过滤器的作用与角度限制要过滤完全相同,但我会将模型传递给它,以便我能够在所有项目的列表中查找该项目,并将其与标准限制完成的项目合并到...
我认为它非常整洁。
以防万一有人仍在寻找解决方案。
此自定义限制筛选器在限制列表之前删除所选项目。这是角度限制的简化版本(它只是假设您正在传递正确的值)。
angular
.module('app')
.filter('myLimitTo', myLimitToFilter);
/*========================================
= filter =
========================================*/
function myLimitToFilter() {
return function (input, limit, selectedItems) {
if (!_.isArray(input) && !_.isString(input)) {
return input;
}
if (limit >= 0) {
return input.filter(filterOutExisting).slice(0, limit);
} else {
return input.slice(limit, input.length);
}
function filterOutExisting(item) {
return !_.includes(selectedItems, item);
}
};
}