需要在my页面中订阅事件,并且在info页面中发布事件,这样才能实现将info页面的inputValue传递到my页面的name中。
App({
eventManager: {
events: {},
subscribe(event, callback) {
if (!this.events[event]) {
this.events[event] = [];
}
this.events[event].push(callback);
},
publish(event, data) {
const callbacks = this.events[event];
if (callbacks) {
callbacks.forEach(callback => {
callback(data);
});
}
},
unsubscribe(event, callback) {
const callbacks = this.events[event];
if (callbacks) {
const index = callbacks.indexOf(callback);
if (index !== -1) {
callbacks.splice(index, 1);
}
}
}
},
globalData: {
avatarUrl: '',
userName: '',
name: '456',
userInfo: null
},
onLaunch: function () {
// ...
}
});
然后,在my页面中正确地订阅事件和处理事件:
const app = getApp();
Page({
// ... 其他代码
onLoad() {
// 从全局数据或缓存中获取姓名
this.setData({
avatarUrl: app.globalData.avatarUrl,
userName: app.globalData.userName,
name: app.globalData.name,
});
// 订阅事件
app.eventManager.subscribe('inputValueChange', this.handleInputValueChange);
},
// 处理事件的回调函数
handleInputValueChange(inputValue) {
this.setData({
name: inputValue
});
},
onUnload() {
// 取消订阅事件,确保在页面卸载时取消订阅,防止内存泄漏
app.eventManager.unsubscribe('inputValueChange', this.handleInputValueChange);
},
// ... 其他代码
});
最后,在info页面中发布事件:
const app = getApp();
Page({
// ... 其他代码
// 点击提交按钮时发布事件
onSubmit() {
// ... 其他逻辑
app.eventManager.publish('inputValueChange', this.data.inputValue);
},
// ... 其他代码
});
通过以上步骤,当你在info页面点击提交按钮时,会发布名为inputValueChange
的事件,并将inputValue作为数据传递出去。在my页面中订阅了该事件,当事件被发布时,会触发handleInputValueChange
函数,将inputValue更新到my页面的name属性中。