首页数据交互

上一节,讲解了如何画页面,今天,讲讲如何进行互动,和数据进行交互。

在小程序基础开发文章中,有介绍说明页面的数据如何互动,那就是在js文件中,设置数据和方法。根据首页页面实际情况,搜索框,快捷按钮都需要互动。

先说搜索框,搜索框需要记录用户输入的内容,当按钮点击搜索,或者回车时,还需要根据用户输入的内容,去后台请求数据。

在index.js文件中,我们添加如下内容:

data: { artList: [], inputShowed: false, inputVal: "", keyword: "", },

还需要添加如下方法:

showInput: function () { this.setData({ inputShowed: true }); }, hideInput: function () { this.setData({ inputVal: "", inputShowed: false, keyword: "", artList: [], }); }, inputTyping: function (e) { this.setData({ inputVal: e.detail.value }); }, search(e) { var keyword = this.data.inputVal.toLowerCase() this.setData({ keyword: keyword, op: 1, }) this.searchArt(1, keyword) },

其中,inputTyping和search方法是记录搜索内容,并向后台请求数据,其它两个方法是为了美化搜索框的效果。

当后台返回数据后,会赋值给artList,它是一个数组列表,我们循环读取渲染它的内容。在index.wxml中的代码如下:

<!-- 内容--> <!--循环输出--> <view class="weui-cells"> <block wx:for="{{artList}}" wx:key="uuid" > <view aria-labelledby="js_cell_l1_bd " aria-describedby="js_cell_l1_note" class="weui-cell weui-cell_access" hover-class="weui-cell_active" bindtap="jump" data-idx="{{index}}" data-guid="{{item.uuid}}" data-stars="{{item.views}}"> <view class="weui-cell__bd" id="js_cell_l1_bd" aria-hidden="true"> <view>{{item.title}}</view> </view> <view class="weui-cell__ft weui-cell__ft_in-access" aria-hidden="true"> <text wx:if="{{ item.lockState == 1 }}" id="js_cell_l1_note" aria-label=",锁" class="weui-badge weui-badge_dot">锁</text> <text wx:elif="{{ item.createTime > yestTime }}" id="js_cell_l1_note" aria-label=",新" class="weui-badge weui-badge_dot">新</text> <!-- <text wx:elif="{{ item.updateTime > item.createdTime }}" id="js_cell_l1_note" aria-label=",有更新" class="weui-badge weui-badge_dot">修</text> --> <text wx:elif="{{ item.views > 50 }}" id="js_cell_l1_note" aria-label=",火" class="weui-badge weui-badge_dot">热</text> <text wx:elif="{{ item.views > 500 }}" id="js_cell_l1_note" aria-label=",非常火" class="weui-badge weui-badge_dot">爆</text> <text wx:elif="{{ item.views > 5000 }}" id="js_cell_l1_note" aria-label=",超级火" class="weui-badge weui-badge_dot">燃</text> </view> </view> </block> </view> <!--循环输出-->

为了更好的体验,我们在列表中根据浏览次数,显示不同的修饰词。让用户更好的了解到那篇文章质量更高,更受欢迎。点击列表后,会跳转到文章详情。通过jump方法实现。当在视图上需要更多的参数时,可以使用data-格式,这样会传给js具体值,在请求后台数据章节我们会讲解更多。

首页中,包含3个快捷按钮,分别为最新、最火、最冷。根据文章的浏览量来排序展示。按钮本身有点击属性,当点击按钮时,我们将根据按钮设置的参数去后台查询对应的数据。这三个按钮都使用同一个查询函数,为了区分三个按钮,我们可以使用view的id属性。代码如下:

bindBtn: function (e) { let btnId = e.target.id; let qtype = 1; switch (btnId) { case "btnHot": // 按浏览次数倒序排序,再按创建升序 qtype = 1; break; case "btnNew": // 按创建倒序排序 qtype = 2; break; case "btnCold": // 按浏览次数升序排序,再按创建升序 qtype = 3; break; default: break; } this.setData({ artList: [], qtype: qtype, op: 2, }) this.getArtList(1, qtype) },

下一节,我们讲解使用网络请求后台数据。