Page() 函数用来注册一个页面。接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。参考微信小程序 注册页面 Page()函数
| 属性 | 类型 | 描述 |
|---|---|---|
| data | Object | 页面的初始数据 |
Page({ data: { text: "This is page data." }, xxxx: function(options) { // Do some initialize when page load. }, })
data 将会以 JSON 的形式由逻辑层传至渲染层,所以其数据必须是可以转成 JSON 的格式:字符串,数字,布尔值,对象,数组。
<view>{{text}}</view> <view>{{array[0].msg}}</view>
Page({ data: { text: 'init data', array: [{msg: '1'}, {msg: '2'}] } })
Page 中还可以定义组件事件处理函数。在渲染层的组件中加入事件绑定,当事件被触发时,就会执行 Page 中定义的事件处理函数。
<view bindtap="viewTap"> click me </view>
Page({ viewTap: function() { console.log('view tap') } })
到当前页面的路径,类型为String。
Page.prototype.route
route字段可以获取到当前页面的路径。
Page.prototype.setData(Object data, Function callback)
setData 函数用于将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值。
setData() 参数格式 接受一个对象,以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value
注意:
<!--index.wxml--> <view>{{text}}</view> <button bindtap="changeText"> Change normal data </button> <view>{{num}}</view> <button bindtap="changeNum"> Change normal num </button> <view>{{array[0].text}}</view> <button bindtap="changeItemInArray"> Change Array data </button> <view>{{object.text}}</view> <button bindtap="changeItemInObject"> Change Object data </button> <view>{{newField.text}}</view> <button bindtap="addNewField"> Add new data </button>
// index.js Page({ data: { text: 'init data', num: 0, array: [{text: 'init data'}], object: { text: 'init data' } }, changeText: function() { // this.data.text = 'changed data' // 不要直接修改 this.data // 应该使用 setData this.setData({ text: 'changed data' }) }, changeNum: function() { // 或者,可以修改 this.data 之后马上用 setData 设置一下修改了的字段 this.data.num = 1 this.setData({ num: this.data.num }) }, changeItemInArray: function() { // 对于对象或数组字段,可以直接修改一个其下的子字段,这样做通常比修改整个对象或数组更好 this.setData({ 'array[0].text':'changed data' }) }, changeItemInObject: function(){ this.setData({ 'object.text': 'changed data' }); }, addNewField: function() { this.setData({ 'newField.text': 'new data' }) } })
behaviors 可以用来让多个页面有相同的数据字段和方法。 参数说明
// my-behavior.js module.exports = Behavior({ data: { sharedText: 'This is a piece of data shared between pages.' }, methods: { sharedMethod: function() { this.data.sharedText === 'This is a piece of data shared between pages.' } } })
// page-a.js var myBehavior = require('./my-behavior.js') Page({ behaviors: [myBehavior], //引入其它的 behavior onLoad: function() { this.data.sharedText === 'This is a piece of data shared between pages.' } })
Page 构造器适用于简单的页面。但对于复杂的页面, Page 构造器可能并不好用。
Component 构造器的主要区别是:方法需要放在 methods: { } 里面。
<code javascript> Component({
data: {
text: "This is page data."
},
methods: {
onLoad: function(options) {
// 页面创建时执行
},
onPullDownRefresh: function() {
// 下拉刷新时执行
},
// 事件响应函数
viewTap: function() {
// ...
}
}
}) <code>