首页数据交互
上一节,讲解了如何画页面,今天,讲讲如何进行互动,和数据进行交互。
在小程序基础开发文章中,有介绍说明页面的数据如何互动,那就是在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)
},
下一节,我们讲解使用网络请求后台数据。