微信小程序教学第三章第三节(含视频):小程序中级实战教程:视图与数据关联
§ 视图与数据关联
本文配套视频地址:
https://v.qq.com/x/page/z0554wyswib.html
开始前请把
ch3-3分支中的code/目录导入微信开发工具
首先
首先我们要做的是什么呢?直接写模板逻辑吗?不是,给用户以良好的提示是很重要的,所以,我们要做的第一件事就是,加载中...
这里我们采用官方 loading 组件,所以现在就可以直接拿来用了。
修改 index.wxml,增加 loading 组件。很明显,变量 hiddenLoading 控制着它的展示与隐藏:
<loading hidden="{{hiddenLoading}}">数据加载中</loading>
然后修改 index.js,处理 loading 组件的状态逻辑值 hiddenLoading
// 刚进入列表页面,就展示loading组件,数据加载完成后隐藏
onLoad (options) {
this.setData({
hiddenLoading: false
})
this.requestArticle()
},
// 列表渲染完成后,隐藏 loading组件
renderArticle (data) {
if (data && data.length) {
let newList = this.data.articleList.concat(data);
this.setData({
articleList: newList,
hiddenLoading: true
})
}
}
分析页面结构
通过分析静态页面可以看出,这个列表是按照 天 为单位来分段,在每天的文章里又按照 文章 为单位继续细分。所以可以知道这个 wxml 的主体结构是循环套循环。所以我们可以初步写出下面的结构:
<loading hidden="{{hiddenLoading}}">数据加载中</loading>
<view class="wrapper">
<view wx:for="{{ articleList }}" wx:for-item="group" wx:key="{{ group.date }}" class="group">
<view wx:for="{{ group }}" wx:for-item="item" wx:key="{{ item.contentId }}"></view>
</view>
</view>
这里有一点需要 注意:在 wxml 做循环嵌套的时候,一定要重新定义 wx:for-item 字段。因为 wxml 循环中当前项的下标变量名默认为 index,当前项的变量名默认为 item。如果没有重新定义 item,在内层循环里通过 item 取到的值其实是外层循环的值。
下面我们就详细的分析下具体的结构,首先,每一天都有一个日期做开头,然后下面是一天的 4 篇文章。每篇文章分为左右结构,左边是标题,最多 3 行,超过的文字就用 … 表示。右边是一张文章的封面图,如果没有封面图就用默认的封面图。上面的日期如果是今天就显示今天,否则就直接显示月日,所以可以把 wxml 结构丰富成下面的样子:
<loading hidden="{{hiddenLoading}}">数据加载中</loading>
<view class="wrapper">
<!--repeat-->
<view wx:for="{{ articleList }}" wx:for-item="group" wx:key="{{ group.date }}" class="group">
<view class="group-bar">
<view class="group-title {{ group.formateDate === '今日' ? 'on' : ''}}">{{ group.formateDate }}</view>
</view>
<view class="group-content">
<!--repeat-->
<view wx:for="{{ group.articles }}" wx:for-item="item" wx:key="{{ item.contentId }}" data-item="{{ item }}" class="group-content-item">
<view class="group-content-item-desc ellipsis-multi-line ellipsis-line-3">{{ item.title }}</view>
<image mode="aspectFill" class="group-content-item-img" src="{{ item.cover || defaultImg.coverImg }}" ></image>
</view>
</view>
</view>
</view>
这里有一个图片处理的属性可以看看相应的 API 了解下:
页面结构搭建完了吗?并没有,还有一件很重要的事情要做。当我们的所有内容都展示完了,我们要友好的提醒用户,所以需要在最底端加上一个提示,把这些交互考虑进去之后的 wxml 就是下面这样的:
<!--index.wxml-->
<loading hidden="{{hiddenLoading}}">数据加载中</loading>
<view class="wrapper">
<!--repeat-->
<view wx:for="{{ articleList }}" wx:for-item="group" wx:key="{{ group.date }}" class="group">
<view class="group-bar">
<view class="group-title {{ group.formateDate === '今日' ? 'on' : ''}}">{{ group.formateDate }}</view>
</view>
<view class="group-content">
<!--repeat-->
<view wx:for="{{ group.articles }}" wx:for-item="item" wx:key="{{ item.contentId }}" data-item="{{ item }}" class="group-content-item">
<view class="group-content-item-desc ellipsis-multi-line ellipsis-line-3">{{ item.title }}</view>
<image mode="aspectFill" class="group-content-item-img" src="{{ item.cover || defaultImg.coverImg }}" ></image>
</view>
</view>
</view>
<view hidden="{{ hasMore }}" class="no-more">暂时没有更多内容</view>
</view>
到此,列表的页面与大体数据可以说是告一段落了,下一节我们介绍下如何增加阅读标识功能及分享功能、下拉更新功能
iKcamp官网:http://www.ikcamp.com
访问官网更快阅读全部免费分享课程:《iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享》。
包含:文章、视频、源代码
iKcamp原创新书《移动Web前端高效开发实战》已在亚马逊、京东、当当开售。
iKcamp最新活动
与
“天天练口语”小程序总榜排名第四、教育类排名第一的研发团队,面对面沟通交流。
微信小程序教学第三章第三节(含视频):小程序中级实战教程:视图与数据关联的更多相关文章
- 微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具
iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...
- 微信小程序教学第四章第三节(含视频):小程序中级实战教程:详情-功能完善
详情 - 功能完善 本文配套视频地址: https://v.qq.com/x/page/f0555nfdi14.html 开始前请把 ch4-3 分支中的 code/ 目录导入微信开发工具 这一节中, ...
- 微信小程序教学第三章第四节(含视频):小程序中级实战教程:下拉更新、分享、阅读标识
下拉更新.分享.阅读标识 本文配套视频地址: https://v.qq.com/x/page/h0554i4u5ob.html 开始前请把 ch3-4 分支中的 code/ 目录导入微信开发工具 这一 ...
- 微信小程序教学第三章(含视频):小程序中级实战教程:列表-页面逻辑处理
§ 页面逻辑处理 本文配套视频地址: https://v.qq.com/x/page/n0554dndrez.html 开始前请把 ch3-2 分支中的 code/ 目录导入微信开发工具 修改 ind ...
- 微信小程序教学第四章第一节(含视频):小程序中级实战教程:详情-页面制作
详情 - 页面制作 本文配套视频地址: https://v.qq.com/x/page/o0555o20xjd.html 开始前请把 ch4-1 分支中的 code/ 目录导入微信开发工具 这一章节中 ...
- 微信小程序教学第四章第二节(含视频):小程序中级实战教程:详情-视图渲染
§ 详情 - 数据渲染 本文配套视频地址: https://v.qq.com/x/page/x055550lrvd.html 开始前请把 ch4-2 分支中的 code/ 目录导入微信开发工具 这一节 ...
- 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 封装网络请求及 mock 数据
§ 封装网络请求及 mock 数据 本文配套视频地址: https://v.qq.com/x/page/i05544fogcm.html 开始前请把 ch2-3 分支中的 code/ 目录导入微信开发 ...
- 【软件构造】第三章第三节 抽象数据型(ADT)
第三章第三节 抽象数据型(ADT) 3-1节研究了“数据类型”及其特性 ; 3-2节研究了方法和操作的“规约”及其特性:在本节中,我们将数据和操作复合起来,构成ADT,学习ADT的核心特征,以及如何设 ...
- iKcamp出品微信小程序教学共5章16小节汇总(含视频)
随机推荐
- Python之re正则模块二
13.编译的标志 可以用re.I.re.M等参数,也可以直接在表达式中添加"?(iLmsux)"标志 *s:单行,“.”匹配包括换行符在内的所有字符 *i:忽略大小写 *L:让&q ...
- [O]ORACLE物化视图的使用
用于数据复制的物化视图 物化视图的一个主要功能就是用于数据的复制,Oracle推出的高级复制功能分为两个部分,多主复制和物化视图复制.而物化视图复制就是利用了物化视图的功能. 物化视图复制包含只读物化 ...
- 【框架学习与探究之依赖注入--Autofac】
声明 本文欢迎转载,原文地址:http://www.cnblogs.com/DjlNet/p/7603642.html 序 同样的又是一个双11如期而至,淘宝/天猫实时数据显示,开场3分钟总交易额突破 ...
- 去除url后缀(.html,.jsp等)的有效方法
有时候,我们想要隐藏真正的路径,或者觉着很酷,举一个知乎网的例子,如https://www.zhihu.com/question/39547745 那么?如何做到呢,其实,可以有一个非常简单而有效的解 ...
- 《java.util.concurrent 包源码阅读》 结束语
<java.util.concurrent 包源码阅读>系列文章已经全部写完了.开始的几篇文章是根据自己的读书笔记整理出来的(当时只阅读了部分的源代码),后面的大部分都是一边读源代码,一边 ...
- Mysql基础--表的操作
1.表的基本概念 每一行代表一条唯一的记录,每一列代表记录中的一个字段. 2.创建表 例子: 3.查看表结构 (1)DESCRIBE语句查看表定义 语法: 例子: (2)SHOW CREATE TAB ...
- 浅谈canvas绘画王者荣耀--雷达图
背景: 一日晚上下班的我静静的靠在角落上听着歌,这时"滴!滴!"手机上传来一阵qq消息.原来我人在问王者荣耀的雷达图在页面上如何做出来的,有人回答用canvas绘画.那么问题来了, ...
- Uncaught TypeError: download is not a function at HTMLAnchorElement.onclick (index.html:25)
前段时间调试html报了这样的一个错误 Uncaught TypeError: download is not a function at HTMLAnchorElement.onclick ...
- 实践作业2:黑盒测试实践——安装配置测试工具 Day 3
安装配置Katalon Studio工具 1.找下载Katalon链接,需要有效电子邮件才能激活Katalon账户,在我的Gmail里注册. 2.选择下载版本 3.下载完成后 ,转到计算机上的文件夹, ...
- phpstorm快捷键记录
快捷键记录 Ctrl + N 按类名查找Ctrl + Shift + N 按文件名查找,快速查找文件Ctrl + Shift+Alt+N 根据函数名查找Ctrl + F 当前文件查找Ctrl + Sh ...