微信小程序之数据绑定(五)

作者: 爱情小傻蛋 | 来源:发表于2017-02-21 16:37 被阅读10442次

微信小程序之入门篇(一)
微信小程序之注册篇(二)
微信小程序之开发初体验(三)——开发工具使用和目录结构
微信小程序之生命周期(四)
微信小程序之数据绑定(五)
微信小程序之触控事件(六)
微信小程序之基础组件篇——视图容器(七)
微信小程序之基础组件篇——基础内容(八)
微信小程序之基础组件篇——表单组件(九)
微信小程序之基础组件篇——导航组件(十)
微信小程序之基础组件篇——媒体组件(十一)
微信小程序之API篇——豆瓣图书搜索(十二)
微信小程序之拓展篇——weui-wxss(十三)

微信小程序是通过什么方法来实现数据绑定的呢?答案是状态模式-单向数据流。
状态模式定义一个对象,改对象可以通过管理其状态的变化,从而实现应用程序做出相应的变化。


状态模式

简单的讲,对象状态化,只要对象状态发送变化,就通知页面更新视图元素。 通过以下三个步骤实现:

  • 识别哪个UI元素被绑定了相应的对象。
  • 监视对象状态的变化。
  • 将所有变化传播到绑定的视图上。

注意数据流向是单向的,即视图变化不会影响对象状态。

index.wxml:
<view> {{ message }} </view>
index.js:
Page({
 data: {
   message: 'Hello MINA!'
 }
})

通过以上代码,就可以完成简单的数据绑定。

以下将展示小程序提供的更加多元化的复杂的数据绑定方式。

index.wxml
 <!--数据绑定--内容-->
<view>{{message}}</view>

<!--数据绑定--组件属性-->
<view id="item-{{id}}">组件属性id-{{id}}</view>

<!--数据绑定---控制属性-->
<view wx:if="{{condition}}">控制属性{{condition}}</view>

<!--数据绑定---三元运算-->
<view hidden="{{flag ? true : false}}">Hidden--{{flag}}</view>

<!--数据绑定---算数运算-->
<view>{{a + b}} + {{c}} + d</view>

<!--数据绑定---逻辑判断-->
<view wx:if="{{length > 5}}">6</view>

<!--数据绑定---字符串运算-->
<view>{{"Hello  " + name}}</view>

<!--数据绑定---数组组合-->
<view wx:for="{{[zero, 1, 2, 3, 4, 5, 6]}}">{{item}}</view>

<!--数据绑定---对象-->
<!--最终组合成的对象是{for: 1, bar: 2}-->
<template is="objectCombine" data="{{for: x, bar: y}}"></template>

<!--数据绑定---扩展运算符 ... 来将一个对象展开-->
<!--最终组合成的对象是{a: 1, b: 2, c: 3, d: 4, e: 5}-->
<template is="objectCombine" data="{{...obj1, ...obj2, e: 5}}"></template>

<!--数据绑定---对象的 key 和 value 相同-->
<!--最终组合成的对象是{foo: 'my-foo', bar:'my-bar'}-->
<template is="objectCombine" data="{{foo, bar}}"></template>
index.js
Page({
  data:{
    //内容
    message:'Hello MINA!',

    //组件属性
    id: 0,

    //控制属性
    condition: true,

    //三元运算
    flag:false,

    //算数运算
    a: 1,
    b: 2,
    c: 3,

    //逻辑判断
    length: 6,

    //字符串运算
    name: 'MINA',

    //数组组合
    zero: 0,

    //对象
    x: 0,
    y: 1,

    //对象展开
    obj1: {
        a: 1,
        b: 2
    },
    obj2: {
        c: 3,
        d: 4
    },
    e: 5,

    //对象key和value相同
    foo: 'my-foo',
    bar: 'my-bar'
  },
})

聪明的读者一定会发现,其实仅仅通过绑定数据实现视图的展示是不够的,一旦用户操作或者数据更新引起数据变化,视图需要同步更新。
所以视图上的数据都必须用过事件传递给对象,只有用户操作视图,才能获取到数据,并更新对象状态。调用this.setData()方法实现视图的部分渲染。如下图:

视图-对象
  • 视图A由于用户操作,触发事件A 。
  • 事件A处理函数中,更新对象A和对象B的状态。
  • 由于对象A和B状态变化,通知视图A和B更新。
index.wxml:
<view bindtap="changeText"> {{ message }} </view>
index.js:
Page({
 data: {
   message: 'Hello MINA!'
 },
changeText: function(){
    this.setData({
      message:'changed data'
    })
  }
})

相关文章

  • 微信小程序之数据绑定(五)

    微信小程序之入门篇(一)微信小程序之注册篇(二)微信小程序之开发初体验(三)——开发工具使用和目录结构微信小程序之...

  • 微信小程序组件探究和应用

    把玩微信小程序组件 微信小程序把玩《二》:页面生命周期,模块化,数据绑定,view组件 微信小程序把玩《三》:sc...

  • 2019-01-15 微信小程序开发学习--页面事件和数据绑定

    数据绑定 微信小程序的数据绑定与vue相似,数据来源是通过js中的data来绑定 在js的page中定义数据,数据...

  • 微信小程序 数据绑定

    WXML 中的动态数据均来自对应 Page 的 data。 简单绑定 数据绑定使用 Mustache 语法(双大括...

  • 微信小程序-数据绑定

    微信小程序的数据绑定类似于vue,先在js里面定义变量,然后在标签中使用{{ 变量名 }}的形式来展示数据 1.定...

  • 小程序 小方法

    微信小程序input数据双向绑定 简单实现双向数据绑定--对象下的属性赋值绑定(可以自己改一元变量方式)每个页面引...

  • 微信小程序综合

    WXSSWXML导入的两种方式 数据绑定列表渲染事件绑定 小程序的部分内置组件和接口(更新) 小程序的配置文件微信...

  • 微信小程序的数据绑定

    数据绑定 几种数据绑定方式。jQuery Vue 微信小程序 注意 data 是一个字典。 获取和修改 data...

  • 小程序随笔2:数据绑定与传递参数

    这里先介绍一下微信小程序的数据绑定 微信小程序的基于MINA框架开发的。每一个页面由 .js(必须) .wxml(...

  • 如何做微信小程序后台的数据分析

    微信小程序后台有哪些功能能? 微信小程序数据后台(部分数据截图)​ 微信小程序后台 上图是微信小程序的后台功能,小...

网友评论

  • 知晓程序:你好!我们是爱范儿旗下专注于小程序生态的公众号知晓程序(微信号 zxcx0101)。我们很赞赏你的这一系列文章,希望能获得转载授权。授权后,你的文章将会在知晓程序社区(minapp.com)、爱范儿、AppSo 等渠道发布。此外,由于第三方同步抓取功能,您的内容也可能会被同步发表到今日头条、搜狐、网易号等,我们会注明来源和作者姓名。

本文标题:微信小程序之数据绑定(五)

本文链接:https://www.haomeiwen.com/subject/cvhuwttx.html