微信小程序 - Page()

Page(Object)函数用来注册一个页面

Object参数说明

1.data

页面初始化数据。是页面第一次渲染使用的初始数据。data将会以json字符串的形式由逻辑层传至渲染层,因此data中的数据必须是可以转成JSON的类型:字符串、数字、布尔值、对象、数组。

2.onLoad

生命周期回调,监听页面加载。

3.onShow

生命周期回调,监听页面显示。

4.onReady

生命周期回调,监听页面初始渲染完成。

5.onHide

扫描二维码关注公众号,回复: 2954674 查看本文章

生命周期回调,监听页面隐藏。

6.onUnload

生命周期回调,监听页面卸载。

7.onPullDownRefresh

监听用户下拉动作。

8.onReachBottom

页面上拉触底事件的处理函数。

9.onShareAppMessage

用户点击右上角转发。

10.onPageScroll

页面滚动触发事件的处理函数。

11.onTabItemTap

当前是tab页时,点击tab时触发。

Object内容在加载时会进行一次深拷贝,需要考虑数据大小到页面加载的开销。

WXML

WeiXin Markup Language

1.数据绑定

使用Mustache语法(双大括号)将变量包起来。可以作用于:

(1)内容

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

(2)组件属性

<view id="item-{{id}}"> </view>
Page({
  data: {
    id: 0
  }
})

(3)控制属性

<view wx:if="{{condition}}"> </view>
Page({
  data: {
    condition: true
  }
})

(4)关键字

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

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

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

(5)运算

<view hidden="{{flag ? true : false}}"> Hidden </view>
<view> {{a + b}} + {{c}} + d </view>
Page({
  data: {
    a: 1,
    b: 2,
    c: 3
  }
})
<view wx:if="{{length > 5}}"> </view>
<view>{{"hello" + name}}</view>
<view>{{object.key}} {{array[0]}}</view>
Page({
  data: {
    object: {
      key: 'Hello '
    },
    array: ['MINA']
  }
})

(6)组合

可以在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}。
注意: 花括号和引号之间如果有空格,将最终被解析成为字符串

<view wx:for="{{[1,2,3]}} ">
  {{item}}
</view>
等同于

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

2.列表渲染

在组件上使用wx:for控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。

默认数组的当前项的下标变量名默认为index,数组当前项的变量名默认为item。

使用wx:for-item可以指定数组当前元素的变量名。

使用wx:for-index可以指定数组当前下载的变量名。

<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
  {{idx}}: {{itemName.message}}
</view>

3.条件渲染

因为wx:if之中的模板也可能包含数据绑定,所以当wx:if的条件值切换时,框架有一个局渲染的过程,因为它会确保条件块在切换时销毁或重新渲染。

同时,wx:if只在第一次变成真的时候才开始渲染,相比之下,hidden就简单的多,组件始终会被渲染,只是简单的控制显示与隐藏。

4.模板

可以在模板中定义代码片段,然后在不同的地方调用。

<template name="msgItem">
  <view>
    <text> {{index}}: {{msg}} </text>
    <text> Time: {{time}} </text>
  </view>
</template>

使用is属性,声明城要的使用的模板,然后将模板所需要data传入,

<template is="msgItem" data="{{...item}}"/>
Page({
  data: {
    item: {
      index: 0,
      msg: 'this is a template',
      time: '2016-09-15'
    }
  }
})

模板只能使用data传入的数据以及模板定义文件中定义的<wxs />模块。

5.事件

(1)事件的使用方式

  • 在组件中绑定一个事件处理函数

当用户点击该组件的时候会在该页面中对应的Page中找到相应的事件处理函数。

<view id="tapTest" data-hi="WeChat" bindtap="tapName"> Click me! </view>
  • 在相应的Page定义中写上相应的事件处理函数,参数是event
Page({
  tapName: function(event) {
    console.log(event)
  }
})

(2)事件详解

touchstart-手指触摸动作开始。

touchmove-手指触摸移动。

touchcancel-手指触摸动作被打断,如来电提醒,弹窗

touchend-手指触摸动作结束

tap-手指触摸后马上离开

longpress-手指触摸后,超过350ms再离开,如果指定了事件回调函数并触发了这个事件,tap事件将不被触发

longtab-(推荐使用longpress替换)

transitionend-会在WXSS transition或wx.createAnimation动画结束后触发。

animationstart-会在一个WXSS animation动画开始时触发。

animationiteration-会在一个WXSS animation一次迭代结束时触发

animationend-会在一个WXSS animation动画完成时触发

touchforcechange-在支持3D touch的iphone设备,重按时会触发

(3)事件的绑定

事件绑定的写法组件的属性,以key、value的形式

  • key以bind或catch开头,然后跟上事件的类型,如bindtap、catchtouchstart或bind:tap.
  • value是一个字符串,需要在对应的Page中定义同名的函数,不然当触发事件的时候会报错。

bind事件绑定不会阻止冒泡事件向上冒泡,catch事件绑定可以阻止冒泡事件向上冒泡。

6.引用

WXML提供两种文件引用方式import和include

(1)import

import可以在该文件中使用目标文件定义 的template,

(2)include

include可以将目录文件除了<template /> <wxs />外的整个代码引入,相当于拷凡到Include位置。

猜你喜欢

转载自blog.csdn.net/CHS007chs/article/details/81740175