微信小程序入门到实战(三)

BitLuminaryMaster
• 阅读 1770

数据绑定(二)

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

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

标签的显隐

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

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

 <swiper  wx:if='{{date}}'  catchtap='onSwiperTab' indicator-dots='{{date}}' vertical='{{false}}' autoplay='{{false}}' interval='5000'>
    <swiper-item>
      <image src='/images/post/bl.png' data-postid='3'></image>
    </swiper-item>
    <swiper-item>
      <image src='/images/post/xiaolong.jpg' data-postid='2'></image>
    </swiper-item>
  </swiper>

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

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

图片的切换

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

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

 <view class='circle-img'>
      <image catchtap='onCollectionTap' wx:if='{{collected}}' src='/images/icon/collection.png'></image>
      <image catchtap='onCollectionTap' wx:else src='/images/icon/collection-anti.png'></image>
      <image catchtap='onShareTap' class='share-img' src='/images/icon/share.png'></image>
 </view>

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

数据的循环

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

<view wx:for='{{datesArry}}' wx:for-item='item' wx:for-index='idx'>
  <view catch:tap='onBind'>{{item.date}}</view>
  <view catch:tap='onBind'>{{item.title}}</view>
  <view catch:tap='onBind'>{{item.content}}</view>
</view>

// 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中的路径名是相对路径,不能是绝对路径。

点赞
收藏
评论区
推荐文章
02-Vue入门之数据绑定
02Vue入门之数据绑定02Vue入门之数据绑定2.1.什么是双向绑定?Vue框架很核心的功能就是双向的数据绑定。双向是指:HTML标签数据绑定到Vue对象,另外反方向数
CuterCorley CuterCorley
4年前
uni-app入门教程(7)第三方登录和分享
前言本文主要介绍了APP开发的两大基本功能,即第三方登录登录和分享:包括登录通用配置,微信小程序和APP的第三方登录方式,和分享到聊天和朋友圈,使用uniapp实现有不同的接口和实现方式。一、通用配置因为小程序和APP登录接口不同,需要在前端进行跨端兼容处理,同时微信等平台的小程序一般只支持所属宿主程序的第三方登录,而无法包括其他的
放学路上 放学路上
3年前
微信小程序事件传参与vue传参的不同
1、vue点击事件传参(day)的写法:2、微信小程序写法(1)事件传参(2)获取参数dayprocess(e)console.log(e.currentTarget.dataset.day)3、总结:微信小程序不支持事件传参,可以通过把参数绑定在元素上,通过currentTarget.dataset获取参数。
Stella981 Stella981
3年前
Centos7中使用iptables,docker容器中实例,外网端口无法访问
因微信小程序需要https的域名访问方式,阿里云无法通过IP和端口绑定域名,只能通过IP进行绑定,故如果不想直接使用443端口,就只能进行端口映射了。这里我使用iptables。由于centos7默认是使用firewall作为防火墙,下面介绍如何将系统的防火墙设置为iptables。停止firewall systemctlstopfire
Stella981 Stella981
3年前
HotApp小程序统计云后台 免费的Https云后台服务器
小程序学习有些地方需要后台,比如需要存储数据到服务器,比如微信登录。hotapp有免费的小程序云后台包含基本的新增,查询,修改,删除操作,方便于学习,而且不需要微信appid也可使用。小程序微信手机调试appid,简单解决办法:http://www.wxappunion.com/forum.
Wesley13 Wesley13
3年前
SpringMVC 学习系列 (5) 之 数据绑定
在系列(4)中我们介绍了如何用@RequestParam来绑定数据,下面我们来看一下其它几个数据绑定注解的使用方法。1.@PathVariable用来绑定URL模板变量值,这个我们已经在系列(3)中介绍了使用方法,这里不在赘述。2.@CookieValue用来绑定Cookie中的数据。下面我们用获取Cookie中的sessionId做测试:在
Wesley13 Wesley13
3年前
C# 微信小程序获取绑定手机号
region获取微信手机号///<summary///获取微信手机号///</summary///<paramname"aesIv"向量</param///<paramname"encryptedData"encryptedData</param///<p
Stella981 Stella981
3年前
Lightning Web Components html_templates(三)
LightningWebComponents强大之处在于模版系统,使用了虚拟dom进行智能高效的组件渲染。使用简单语法以声明方式将组件的模板绑定到组件的JavaScript类中的数据数据绑定我们可以使用{property}绑定组件模版属性到一个组件js类中的属性一个简单的例子组件class
BitLuminaryMaster
BitLuminaryMaster
Lv1
砧杵敲残深巷月,井梧摇落故园秋。
文章
4
粉丝
0
获赞
0