給組件設(shè)置myevent事件,通過this.triggerEvent('myevent', myEventDetail) 觸發(fā)該myevent事件并傳遞內(nèi)容,在頁面用onMyEventshi事件監(jiān)聽傳遞過來的數(shù)據(jù)。
Page({
// 監(jiān)聽myevent事件
onMyEvent: function (e) {
console.log('接收a組件傳遞的內(nèi)容:', e.detail) // '我是a組件'
}})
組件
點(diǎn)擊Component({
properties: {} methods: {
onTap: function(){
var myEventDetail = '我是a組件'
this.triggerEvent('myevent', myEventDetail) // 觸發(fā)組件上的“myevent”事件
} }
})
兩個(gè)無任何關(guān)聯(lián)的組件:通過全局變量或本地緩存?zhèn)鬟f數(shù)據(jù)
兩個(gè)有關(guān)聯(lián)的組件(同一個(gè)父頁面下): 通過上面的方法,用組件 => 頁面 => 組件的方式傳遞數(shù)據(jù)。
2.頁面之間的通信
2-1.使用全局變量 app.globalData
2-2.使用本地緩存 wx.setStorageSync
2-3.url傳遞
// A頁面-傳遞數(shù)據(jù)
// 需要注意的是,wx.switchTab 中的 url 不能傳參數(shù)。
wx.navigateTo({
url:'../pageD/pageD?name=raymond&gender=male'
})
// B頁面-接收數(shù)據(jù)//
通過onLoad的option...Page({
onLoad: function(option){
console.log(option.name +'is'+ option.gender)// raymond is male
this.setData({option: option })
}})
這個(gè)方法的精髓,是通過獲取到其他頁面的對象原型, 然后通過原型方法 setData 對當(dāng)前對象管理的 data 進(jìn)行修改
示例如下:
//pageE.js
Page({
data: {
index:1
}})
當(dāng)跳轉(zhuǎn)到下一個(gè)頁面 F 之后,假定在 F 中有操作需要對 E 中的數(shù)據(jù)有修改,則可以使用以下方法:
這個(gè)方法可以操作頁面堆棧里面的頁面的數(shù)據(jù), 可以做到讓后一級頁面對上級頁面群的數(shù)據(jù)管理 。
// pageF.js
Page({
changeIndexInE:function(){
varpages = getCurrentPages();
varprevPage = pages[pages.length -2];
prevPage.setData({
index:0
})
}})
傳入模板的除了變量,還可以是事件方法對象。例如,模板中的點(diǎn)擊事件,可以傳遞到使用模板的元素中。
頁面
Page({
data: {
item: {
index: 0,
msg: 'this is a template',
time: '2016-09-15'
} }
})
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)