====== 5.Page()函数 ======
===== -#1 Page() =====
Page() 函数用来注册一个页面。接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。参考[[https://www.w3cschool.cn/weixinapp/weixinapp-page.html|微信小程序 注册页面 Page()函数]] \\
^ 属性 | 类型 ^ 描述 ^
| data | Object | 页面的初始数据 |
Page({
data: {
text: "This is page data."
},
xxxx: function(options) {
// Do some initialize when page load.
},
})
data 将会以 JSON 的形式由逻辑层传至渲染层,所以其数据必须是可以转成 JSON 的格式:字符串,数字,布尔值,对象,数组。 \\
{{text}}
{{array[0].msg}}
Page({
data: {
text: 'init data',
array: [{msg: '1'}, {msg: '2'}]
}
})
===== -#2 事件处理函数 =====
Page 中还可以定义组件事件处理函数。在渲染层的组件中加入事件绑定,当事件被触发时,就会执行 Page 中定义的事件处理函数。
click me
Page({
viewTap: function() {
console.log('view tap')
}
})
==== - Page.route ====
到当前页面的路径,类型为String。
Page.prototype.route
route字段可以获取到当前页面的路径。
==== - Page.prototype.setData() ====
Page.prototype.setData(Object data, Function callback)
setData 函数用于将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值。 \\
setData() 参数格式 接受一个对象,以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value \\
注意: \\
* 直接修改 this.data 而 :!: 不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致
* 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。
{{text}}
{{num}}
{{array[0].text}}
{{object.text}}
{{newField.text}}
// 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'
})
}
})
===== -#3 页面间通信 =====
===== -#4 使用 behaviors() =====
[[https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/behaviors.html | behaviors]] 可以用来让多个页面有相同的数据字段和方法。 [[https://developers.weixin.qq.com/miniprogram/dev/reference/api/Behavior.html|参数说明]]
// 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.'
}
})
==== - 组件中使用 ====
===== -#5 使用 Component =====
Page 构造器适用于简单的页面。但对于复杂的页面, Page 构造器可能并不好用。
[[https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/component.html | Component]] 构造器的主要区别是:方法需要放在 methods: { } 里面。
Component({
data: {
text: "This is page data."
},
methods: {
onLoad: function(options) {
// 页面创建时执行
},
onPullDownRefresh: function() {
// 下拉刷新时执行
},
// 事件响应函数
viewTap: function() {
// ...
}
}
})