请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

我已经将添加历史搜索写在了里面,为什么没实现过滤效果?

    onConfirm(event){
      this.setData({
        searching:true
      });

      const word=event.detail.value;
      bookModel.search(0,word).then(res => {
        this.setData({
          dataArray:res.books
        });
        //将代码写在里面为了使得正确的关键字在历史搜索里保存下来
        keywordModel.addToHistory(word);//添加历史搜索的关键字
      });
    }

图片描述
所谓的过滤就是:老师说的将keywordModel.addToHistory(word);写在书籍搜索获取数据之后的回调中,就可以将数据库中没有的关键词不显示在历史搜索中

正在回答

2回答

我没有看明白这个过滤。什么意思,数据库中没有的关键词?

0 回复 有任何疑惑可以回复我~
  • 提问者 迷失的小麦 #1
    比如hhhhh用户随便写的字符串,如果输入的字符串返回的数据中没有hhhhh,就不会添加历史记录。但是没有实现这个效果,截图可以看出hhhhh出现在了历史搜索中
    回复 有任何疑惑可以回复我~ 2020-04-25 18:42:40
  • 提问者 迷失的小麦 #2
    我看老师在讲解的时候说需要将我粘贴上来的那一句代码放入获取服务器端返回的回调函数中,我的疑问是移动之后貌似并没有什么效果
    回复 有任何疑惑可以回复我~ 2020-04-25 18:48:27
  • 7七月 回复 提问者 迷失的小麦 #3
    keywordModel.addToHistory(word); 这个里面的代码截图看下
    回复 有任何疑惑可以回复我~ 2020-04-26 12:37:44
提问者 迷失的小麦 2020-04-26 12:45:54

addToHistory(keyword){

let words=this.getHistory();

const has=words.includes(keyword);

if(!has){//如果没有这个输入的关键字

const length=words.length;

if(length>=this.maxLength){

words.pop();//将超出的旧记录清除

}

words.unshift(keyword);//将新的搜索记录添加到队列前面

wx.setStorageSync(this.key, words);//重新写入缓存,覆盖之前的值

}

}

另外,这段代码为什么是刷新页面后执行?是不是因为没有setData?

0 回复 有任何疑惑可以回复我~
  • 7七月 #1
    这个方法里本身就没有 你说的 服务器不存在就不显示的逻辑啊。我并不记得我讲了服务器没有搜索到就不显示。
    
    写在onload里只有刷新后才执行
    回复 有任何疑惑可以回复我~ 2020-04-26 14:07:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信