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

来源:14-10 搜索实现2

迷失的小麦

2020-04-25

    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回答

7七月

2020-04-25

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

0
4
迷失的小麦
我将问题重新整理了
2020-04-26
共4条回复

迷失的小麦

提问者

2020-04-26

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
1
7七月
这个方法里本身就没有 你说的 服务器不存在就不显示的逻辑啊。我并不记得我讲了服务器没有搜索到就不显示。 写在onload里只有刷新后才执行
2020-04-26
共1条回复

纯正商业级微信小程序应用实战,全方位小程序特性讲解

真实数据的高质量小程序项目,学会直接工作

4782 学习 · 2125 问题

查看课程