在实际的业务中,应该是文本框输入搜索的时候,触发实际添加。
输入内容—》展示搜索结果—-》点击搜索的数据—-在搜索记录里面添加一条数据。
实现搜索结果
先把button去掉
搜索结果在这个元素的下方
需要一个字段来标识,当前是搜索记录还是搜索结果。默认为true 默认页面进来是搜索记录。
制作结果页面
首先我们把值改成false
这样显示的就是搜索结果。
搜索结果和首页的卡片内容其实是一样的。我们直接把首页的卡片内容拿过来就可以了。这里我们使用一个滚动的组件。
其实整体的写法和lsit-item内容很显示。我们直接把这块代码复制过来。
复制过来,加一个v-else
loadMore就去掉不要了。
下面的内容删掉。
处理list数据绑定。这里的getList方法都复制过来、
复制过来后,删除一些我们不用的
这三个孩子改了
定义searchLsit来定义返回的数据。
定义searchList 初始值是一个空的数组。
循环的就是searchList
在onLoad里面调用这个方法
这相当于是我们搜索后的结果
页面可以正常的去滚动
处理搜索逻辑
change的时候调用getList,并把改变的值传过来查询。
把接收的值传给云函数
默认先来模拟一下,查询所有
输入test,每一次的输入都会触发查询的请求。这样我们的请求太频繁。
所以我们需要限制我们的输入,让它每隔500毫秒或者是1秒去请求数据。其他的时间,等待我们的输入。
this.mark并不会在页面内渲染,所以不需要在data中声明。mark最初是undefined因为最初并没有这个变量。
1秒后执行搜索。
1秒后再把mark设置为false。这样就可以限制我们的请求次数了。
加个叹号,取反
输入1秒后才刷新
设置100%的宽度
处理实际的请求数据
复制get_list的全部代码,
修改下。分页的删掉,这里我们不需要分页。
需要传入一个value
match筛选数据。接收一个正则。
上传部署
函数名改成getSearch
输入一个node关键字
搜索前端
把搜索的内容删除掉了 。但是刚才搜索出来的内容还在
如果value为空,直接返回
首先清理下控制器
然后清理mark设置为false,再调用getSearch。这样哪怕是空的也回去搜索。
清空了搜索内容,查询的是所有的数据
value为空,那么就设置searchList为空数组。
默认设置为true
默认进来
搜索node 没有变化
正常搜索,把is_history设置为false
搜索内容清空