You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AngularJS自动搜索问题:退格后旧结果重复追加至建议列表

解决AngularJS自动搜索旧结果残留的问题

我来帮你搞定这个自动搜索的小bug!核心问题很简单:每次触发搜索时你没有重置用来存放结果的output数组,导致新的搜索结果直接追加到旧结果后面,退格重新输入时旧内容自然就留在列表里了。

先拆解你代码里的几个问题点:

  • output数组在每次搜索前没有清空,旧结果持续累积
  • 你尝试用output[i].splice(...)删除元素,但用法错误(output是字符串数组,不是对象数组,且索引逻辑完全不对)
  • 匹配条件str.indexOf(suggestText) > 0会漏掉搜索文本在标题开头的情况(比如搜"ang"时,"AngularJS"就匹配不到,因为它的index是0)

修正后的代码

// 每次搜索前先清空结果数组,这是解决问题的核心!
output = [];
for (var i = 0 ; i < $scope.suggestionResults.length ; i++){
    var str = $scope.suggestionResults[i].title;
    // 修改匹配逻辑:只要标题包含搜索文本就算匹配,包括开头的情况
    if(str.indexOf(suggestText) !== -1){
        output.push($scope.suggestionResults[i].title);
    } else {
        console.log(suggestText + 'Not matching');
    }
}
$scope.filterSearch = output;
console.log($scope.filterSearch);

关键改进说明

  1. 强制清空结果数组:在for循环前加上output = [];,确保每次搜索都是从空数组开始收集新结果,彻底杜绝旧内容残留
  2. 修正匹配逻辑:把str.indexOf(suggestText) > 0改成str.indexOf(suggestText) !== -1,覆盖搜索文本在标题任意位置的匹配场景
  3. 移除无效删除逻辑:因为现在每次都清空数组,不需要再手动删除旧元素,原来错误的splice代码完全可以去掉,避免额外报错

这样修改后,退格重新输入时,旧的搜索结果就不会再出现在自动建议列表里啦!

内容的提问来源于stack exchange,提问作者shabarinath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:16:06