+
95
-

回答

还可以使用mitt.js通过消息订阅的方式来实现。

在util新建文件mitt.js

function mitt(all) {
all = all || Object.create(null);

return {
on(type, handler) {
(all[type] || (all[type] = [])).push(handler);
},
off(type, handler) {
if (all[type]) {
all[type].splice(all[type].indexOf(handler) >>> 0, 1);
}
},
emit(type, evt) {
(all[type] || []).slice().map((handler) => {
handler(evt);
});
(all['*'] || []).slice().map((handler) => {
handler(type, evt);
});
}
};
}

module.exports = {
mitt: mitt
}

app.js的代码增加:

const mitt = require('./utils/mitt').mitt

App({

onLaunch: function () {
let that = this
that.globalData.bus = mitt()


//调用page里的_custommethod
that.globalData.bus.emit('_custommethod', data)


}

})

page里的代码增加

const app = getApp()

Page({

custommethod: function(data){

},
onShow: function () {
let that = this
app.globalData.bus.on('_custommethod', that.custommethod)

},
onHide: function () {
let that = this
app.globalData.bus.off('_custommethod', that.custommethod)

},

})


网友回复

我知道答案,我要回答