美文网首页微信小程序
4-7 {{数据绑定}}基础

4-7 {{数据绑定}}基础

作者: 留白_汉服vs插画 | 来源:发表于2017-11-20 10:33 被阅读143次

注册页面的相关教程在:

https://mp.weixin.qq.com/debug/wxadoc/dev/framework/app-service/page.html?search-input=setData

简要说一下要点:

Page()函数放在对应页面的 js 文件里的。

Page()函数用来注册一个页面。接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。object属性展示:

所以页面的写法应该是

//index.js

Page({

        data: { text:"在这里主要写的是页面的初始数据"},

        onLoad:function(options){

                // Do some initialize when page load.

         },

        onReady:function(){

                // Do something when page ready.

        },

        // Event handler.

        viewTap: function() {

                this.setData({

                    text: 'Set some data for updating view.'

                },function() {

                    // this is setData callback }

                )

        },

data:初始化数据将作为页面的第一次渲染。data 将会以 JSON 的形式由逻辑层传至渲染层,所以其数据必须是可以转成 JSON 的格式:字符串,数字,布尔值,对象,数组。

渲染层可以通过WXML对数据进行绑定。

onLoad: 页面加载

一个页面只会调用一次,可以在 onLoad 中获取打开当前页面所调用的 query 参数。

Page.prototype.setData()

setData函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的this.data的值(同步)。

object 以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value。 callback 是一个回调函数,在这次setData对界面渲染完毕后调用。

其中 key 可以非常灵活,以数据路径的形式给出,如array[2].message,a.b.c.d,并且不需要在 this.data 中预先定义

注意:

直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致

单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据

请不要把 data 中任何一项的 value 设为undefined,否则这一项将不被设置并可能遗留一些潜在问题。

这个是对应的页面中的数据

object 以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value.比如下面的text就是key,设置成value为changed data。

另外一个注意点:在data中,如果是text:"init data"在wxml中数据绑定的时候,直接用{{text}}就可以了。如果是array:[{text:"init data"}] 在wxml中数据绑定的时候,要用{{array[0].text}},同理{{object.text}} ,根据在data中的缩进,确定层次,使用点来确定是谁的属性。data中的第一层属性不需要使用,第二层之后就开始需要了。

Page中,data是页面初始化时候的数据

直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。”说的就是下面changeNum 中this.data.num = 1 不会改变页面的状态,必须调用this.setData({num:this.data.num}) 才可以改变。

知识点1、以前的html获取DOM节点,然后给DOM某个元素赋值。小程序没有这样DOM节点,但是可以直接数据绑定,进行数据传递。单向数据绑定,从脚本文件向前端传递。但是前端标签数据改变,脚本文件不会改变。是通过事件传递才行。 不是双向绑定。

知识点2、如何绑定。在wxml标签里用双花括号。

知识点3、onload时候,通过脚本向服务器请求数据。获取后的数据,通过setData(获取的数据)函数。

不用全部背下来,遇到之后,当做查询手册就行了。但是还是要知道怎么在wxml中使用数据绑定。

小程序官方数据绑定教程:

数据绑定

WXML 中的动态数据均来自对应 Page 的 data。注意关键字:“对应 Page 的 data”

简单绑定

数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于:

内容

<view>{{ message }}</view>

Page({ 

    data: {    message:'Hello MINA!'}

})

组件属性(需要在双引号之内)

<view id="item-{{id}}"></view>

Page({ 

    data: {    id:0}

})

控制属性(需要在双引号之内)

<view wx:if="{{condition}}"></view>

Page({ 

    data: {    condition:true}

})

关键字(需要在双引号之内)

true:boolean 类型的 true,代表真值。

false: boolean 类型的 false,代表假值。

<checkbox checked="{{false}}"></checkbox>

特别注意:不要直接写checked="false",其计算结果是一个字符串,转成 boolean 类型后代表真值。

运算

可以在{{}}内进行简单的运算,支持的有如下几种方式:

三元运算

<view hidden="{{flag ? true : false}}">Hidden</view>

算数运算

<view>{{a + b}} + {{c}} + d</view>

Page({ 

        data: {    a:1,    b:2,    c:3}

})

view中的内容为3 + 3 + d。

逻辑判断

<view wx:if="{{length > 5}}"></view>

字符串运算

<view>{{"hello" + name}}</view>

Page({  data:{    name:'MINA'}})

数据路径运算

<view>{{object.key}} {{array[0]}}</view>

Page({  data: {    object: {      key:'Hello '},    array: ['MINA']  }})

组合

也可以在 Mustache 内直接进行组合,构成新的对象或者数组。

数组

<view wx:for="{{[zero, 1, 2, 3, 4]}}">{{item}}</view>

Page({  data: {    zero:0}})

最终组合成数组[0, 1, 2, 3, 4]。

对象

<template is="objectCombine"data="{{for: a, bar: b}}"></template>

Page({  data: {    a:1,    b:2}})

最终组合成的对象是{for: 1, bar: 2}

也可以用扩展运算符...来将一个对象展开

<template is="objectCombine"data="{{...obj1, ...obj2, e: 5}}"></template>

Page({  data: {    obj1: {      a:1,      b:2},    obj2: {      c:3,      d:4}  }})

最终组合成的对象是{a: 1, b: 2, c: 3, d: 4, e: 5}。

如果对象的 key 和 value 相同,也可以间接地表达。

Page({  data: {    foo:'my-foo',    bar:'my-bar'}})

最终组合成的对象是{foo: 'my-foo', bar:'my-bar'}。

注意:上述方式可以随意组合,但是如有存在变量名相同的情况,后边的会覆盖前面,如:

<template is="objectCombine"data="{{...obj1, ...obj2, a, c: 6}}"></template>

Page({  data: {    obj1: {      a:1,      b:2},    obj2: {      b:3,      c:4},    a:5}})

最终组合成的对象是{a: 5, b: 3, c: 6}。

注意:花括号和引号之间如果有空格,将最终被解析成为字符串

<view wx:for="{{[1,2,3]}} ">

    {{item}}

</view>

等同于

<view wx:for="{{[1,2,3] + ' '}}">

    {{item}}

</view>

相关文章

网友评论

    本文标题: 4-7 {{数据绑定}}基础

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