Skip to content

Commit e02877c

Browse files
committed
update: subnvue 组件通信方式更新为全局 $on, $emit 方式
1 parent 9aec8eb commit e02877c

4 files changed

Lines changed: 24 additions & 28 deletions

File tree

pages/API/subnvue/subnvue.vue

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,9 @@
3030
},
3131
onLoad() {
3232
this.closeMask();
33-
const popupNVue = uni.getSubNVueById('popup');
34-
// 向 popup 传递消息
35-
popupNVue.onMessage((res) => {
36-
let data = res.data;
33+
34+
// 接收 popup 的消息
35+
uni.$on('popup-page', (data) => {
3736
switch(data.type){
3837
case 'interactive':
3938
uni.showModal({
@@ -47,16 +46,14 @@
4746
})
4847
break;
4948
}
50-
});
51-
const drawerNVue = uni.getSubNVueById('drawer');
49+
})
5250
// 监听 drawer 消息
53-
drawerNVue.onMessage((res) => {
54-
let data = res.data;
51+
uni.$on('drawer-page', (data) => {
5552
uni.showToast({
5653
title: '点击了第' + data + '',
5754
icon:"none"
5855
});
59-
});
56+
})
6057
},
6158
onReady() {
6259
this.showVideo = true
@@ -66,11 +63,12 @@
6663
uni.getSubNVueById('drawer').show('slide-in-left', 200);
6764
},
6865
showPopup() {
69-
const subNVue = uni.getSubNVueById('popup')
70-
subNVue.postMessage({
66+
//popup 传递消息
67+
uni.$emit('page-popup', {
7168
title: '请阅读软件内容',
7269
content: 'uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到iOS、Android、H5、小程序等多个平台。'
7370
});
71+
const subNVue = uni.getSubNVueById('popup')
7472
subNVue.show('slide-in-top', 250)
7573
},
7674
videoErrorCallback: function(e) {
@@ -82,14 +80,14 @@
8280
playVideo() {
8381
let subNVue = uni.getSubNVueById('video_mask')
8482
subNVue.show('fade-in', 200, () => {
85-
subNVue.postMessage({
83+
uni.$emit('play-video', {
8684
status: 'open',
8785
})
8886
})
8987
},
9088
closeMask() {
9189
let subNVue = uni.getSubNVueById('video_mask')
92-
subNVue.postMessage({
90+
uni.$emit('close-video', {
9391
status: 'close',
9492
})
9593
subNVue.hide('fade-out', 200)

pages/API/subnvue/subnvue/drawer.nvue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
uni.getCurrentSubNVue().hide('auto')
4545
},
4646
clickitem(e) {
47-
uni.getCurrentSubNVue().postMessage(e)
47+
uni.$emit('drawer-page', e);
4848
}
4949
}
5050
}

pages/API/subnvue/subnvue/popup.nvue

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,26 +32,25 @@
3232
for(let i = 1; i < 20; i++){
3333
this.lists.push('item' + i);
3434
}
35-
const subNVue = uni.getCurrentSubNVue()
36-
subNVue.onMessage((data) => {
37-
vm.title = data.data.title;
38-
vm.content = data.data.content;
39-
});
40-
35+
uni.$on('page-popup', (data) => {
36+
console.log('sss');
37+
vm.title = data.title;
38+
vm.content = data.content;
39+
})
4140
},
4241
methods: {
4342
sendMessage() {
4443
const subNVue = uni.getCurrentSubNVue()
45-
subNVue.postMessage({
44+
uni.$emit('popup-page', {
4645
title: '已读完!',
47-
});
46+
})
4847
},
4948
handle(item, index) {
5049
const subNVue = uni.getCurrentSubNVue()
51-
subNVue.postMessage({
50+
uni.$emit('popup-page', {
5251
type: 'interactive',
5352
info: item + ' 该元素被点击了!',
54-
});
53+
})
5554
}
5655
}
5756
}

pages/API/subnvue/subnvue/video-mask.nvue

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,14 @@
3636
}
3737
},
3838
created() {
39-
const subNVue = uni.getCurrentSubNVue()
4039
const vm = this;
41-
subNVue.onMessage((data) => {
42-
if(data.data.status === 'open'){
40+
uni.$on('play-video', (data) => {
41+
if(data.status === 'open'){
4342
this.addItem();
4443
}else{
4544
this.closeItem();
4645
}
47-
});
46+
})
4847
},
4948
beforeDestory(){
5049
this.closeItem()

0 commit comments

Comments
 (0)