博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序入门到实战(三)
阅读量:5011 次
发布时间:2019-06-12

本文共 2131 字,大约阅读时间需要 7 分钟。

数据绑定(二)

上一遍文章的结尾介绍了小程序简单的数据绑定方式,但是核心要知道:数据绑定,都是借用data这个属性作为一个中转地,服务器上面获取的数据,经过处理,使用this.setData()方法绑定到data属性中的一个变量,在通过这个变量绑定到页面上面。

接下来说一下数据绑定的其他用途:

标签的显隐

前面说到,小程序里面没有dom的概念,就不能通过标签的displayvisibility属性来控制,那怎么控制呢?

在小程序里面,对于一个标签的属性值是true / false的时候,在绑定数据的时候,就会对其中的数据进行布尔值的比较,有值就为真,绑定的数据是false或者是空的时候就是假;

就拿前面说的轮播组件来说,当我在对应的页面data属性里面设置date的值的时候,只要不为空或者false,那么swiper中的两个通过绑定数据的方式设置属性值的属性,其属性值就都会被解析为true。那个直接设置falseautoplay属性就不会自动轮播。

注意那个wx:if='{

{date}} ',才是控制标签显示和隐藏的关键。如果date是真,那么wx:if='{
{date}} '
结果为真,就会显示轮播组件,如果date是假,那么wx:if='{
{date}} '
结果为假,就会隐藏轮播组件

图片的切换

通常我们做图片的切换,一般是通过改变图片的路径来实现;在小程序里面可以使用if else动态的控制图片的切换。

类似上面说的控制标签的显示和隐藏,也要使用到数据绑定:

上面代码里面,只显示两张图片,通过collected这个从服务器传过来的标识,来判断是显示wx:if='ture'的图片,还是显示wx:else的图片,两者选其一,很方便的控制了图片的切换。

数据的循环

通常编写页面的时候,想把相同的区域呈现多次,又不想编写冗余的代码,小程序里面通过一个属性:wx:for='{

{数据源}}'

{
{
item.date}}
{
{
item.title}}
{
{
item.content}}
// Page页面中的数据源 onLoad: function (options) {
var datasArr = [{ date: '2018/2/3', title: '神盾局特工1', content: '神盾局特工这个礼拜六停播,说好的不冬歇的呢?' }, { date: '2018/2/3', title: '神盾局特工2', content: '神盾局特工科学组CP要结婚啦!' }] this.setData({ datesArry: datasArr }) // this.setData(datasArr) setData 方法接收的是一个对象,而不是数组 }

我们把要呈现多次的区块,用一个标签包裹view / block,然后在其上面作用于wx:for属性,接收一个数组或者集合的数据,datesArry就是要循环的数据数组,wx:for-item='item' wx:for-index='idx'中的item是被循环的子对象,idx是对应子对象在数据数组里面的索引位置;这两个值都默认是有的,即使不写。

前面也说道过,this.setData()方法是把里面接收到的数据,绑定到Page下面的data属性里面,然后在展示在页面中,小程序的数据绑定,都是从Page中的data属性中读取数据去完成数据绑定。这个读取data属性中的数据去绑定到页面的动作是发生在onLoad事件之后的。

既然这么说的话,那么可不可以直接给data对象身上直接添加属性,并且直接赋值:this.data.datesArry=datasArr,这样是绑定不了数据到页面上,虽然不会报错,小程序的前期版本里面是可以这样绑定数据的。所以都建议使用this.setData()方法去主动更新数据。

要是数据是存放在其他的文件夹下面,应该怎么样读取呢?在数据文件中,通过抛出一个数据出口,来通过其他文件进行访问:

module.exports = {    postList: dataBase  // 数据数组的名字  }

在要使用数据的js文件下,引入要使用数据的路径,应该在page外面引入:

var postsData = require('数据文件所在的路径');

注意这个require中的路径名是相对路径,不能是绝对路径。

转载于:https://www.cnblogs.com/linewman/p/9918362.html

你可能感兴趣的文章
C# 万年历 农历 节气 节日 星座 星宿 属相 生肖 闰年月 时辰(转)
查看>>
A Simple Tree Problem
查看>>
Modular Inverse [ZOJ 3609]
查看>>
MySQL性能测试工具之mysqlslap使用详解
查看>>
深入理解jsonp跨域请求原理
查看>>
regsvr32注册COM组件失败
查看>>
初探c++11之常数表达式
查看>>
jmeter,CSV数据加载、数据库连接、正则
查看>>
(独孤九剑)--正则表达式
查看>>
MySQL学习点滴 --分区表
查看>>
4.6.1 测试基础
查看>>
洛谷 P2486 [SDOI2011]染色
查看>>
oo第三单元总结
查看>>
leetcode : Count and Say [基本功]
查看>>
洛谷 P2485 [SDOI2011]计算器 解题报告
查看>>
c#访问存储过程
查看>>
Slickflow.NET 开源工作流引擎基础介绍(三) -- 基于HTML5/Bootstrap的Web流程设计器
查看>>
Node教程
查看>>
java将字段映射成另一个字段,关于 接口传参 字段不对应转换
查看>>
Redis
查看>>