uni-app 使用原生导航栏上的搜索框时怎么实现历史记录的功能?

发布于 2022-09-13 01:03:53 字数 1218 浏览 17 评论 0

页面的配置:
{

"path": "pages/search/searchList/searchList",
"style": {
        "app-plus": {
            "titleNView": {
                "backgroundColor": "#ffffff",
                "searchInput": {
                    "borderRadius": "15px",
                    "backgroundColor": "#f5f5f5",
                    "placeholder": "搜索您感兴趣的内容"
                },
                "buttons": [{
                    "color": "#4EC6F0",
                    "margin-left": "30rpx;",
                    "text": "取消",
                    "fontSize": "12rpx",
                    "width": "70rpx",
                    "float": "right",
                    "text-align": "center"
                }]
            }
        }
    }

}

监听的生命周期事件:
// 监听搜索输入框点击事件

onNavigationBarSearchInputClicked() {
    uni.navigateTo({
        url: './searchList/searchList'
    })
},
//  监听搜索按钮点击事件
onNavigationBarSearchInputConfirmed(e) {
    console.log('监听搜索按钮点击事件',e)
},
// 监听搜索输入框文本变化
onNavigationBarSearchInputChanged(e) {
    console.log('监听搜索输入框文本变化',e.text)
},

历史记录事件
methods {
handleHistory(item) {
}
}

要如何才能实现历史记录的所点击的值和原生导航栏上的搜索框值绑定?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

琴流音 2022-09-20 01:03:53

直接上代码

searchStart: function () {
  let _this = this;
  if (_this.searchText == '') {//搜索关键词为空
    uni.showToast({//提示信息
      title: '请输入关键字',
      icon: 'none',
      duration: 1000
    });
  } else {
    uni.getStorage({//从缓存中取搜索历史记录的数组
      key: 'search_cache',
      success(res) {//获取成功
        let list = res.data;
        for (let i in list) {//循环遍历
          if (list[i] == _this.searchText) {//如果缓存数组中有搜索关键词
            list.splice(i, 1)//删除数组中的该关键词
          }
        }
        list.unshift(_this.searchText);//将搜索关键词添加到数组开头
        list.splice(6)//只保留6个
        _this.hList = list;
        uni.setStorage({//将新的数组存入缓存
          key: 'search_cache',
          data: _this.hList,
        });
        _this.search(_this.searchText);//搜索
      },
      fail() {//没有获取到缓存
        _this.hList = [];
        _this.hList.push(_this.searchText);
        uni.setStorage({
          key: 'search_cache',
          data: _this.hList,
        });
        _this.search(_this.searchText);//搜索
      }
    })
  }
}

这样可以在搜索的时候查一下缓存,如果有重复,就删除原数组中的该关键词,然后添加到数组的开头。然后删除数组第6个以后的元素(保留6条搜索历史),存入缓存,跳转搜索。这样就可以实现搜索历史记录功能了,如果有更好的方法或者建议,可以共同参考。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文