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