vue2 是 beforePage.$vm.init()
vue3报错 TypeError: beforePage.$vm.init is not a function
vue2 是 beforePage.$vm.init()
vue3报错 TypeError: beforePage.$vm.init is not a function
你是想调用 $vm 上的方法吗?你暴露这个方法了吗?看下你是怎么写的。如果 setup 中可能拿不到,可以换为 options 的形式书写
如果是setup 有好的方式么? 我现在的问题是我再详情也操作成功后想自动返回上一个,并刷新数据,目前只能靠uni.$emit 实现感觉不是很好,想问一下有没有一种更好的实现方式
2023-04-04 10:25
回复 DCloud_UNI_LXH: 但是在setup 中的 @dcloudio/uni-app 似乎没有提供 getOpenerEventChannel 这个方法,就没有办法像
const eventChannel = this.getOpenerEventChannel()
eventChannel.emit('acceptDataFromOpenedPage', {data: 'test'});
eventChannel.emit('someEvent', {data: 'test'});
这样使用
2023-04-04 11:23
回复 店小二丶:
import { getCurrentInstance } from 'vue'
// ...
getCurrentInstance().proxy.getOpenerEventChannel()
2023-04-04 15:52
确实出了这个问题,我以前写修改上一页数据是这样写正常,现在这样写就会报错 后来我换了一种写法
A页面使用 uni.$on监听
B页面使用 uni.$emit传递修改的数据(A页面实时监听)
A页面onUnload调用uni.$off注销监听(一定要加,防止监听值相同)
可以再onShow 中读取值,名字不能取一样,否则赋值页赋不了值,在取值页用新的值赋值就好
onShow(()=>{
const page = getCurrentPages()[0];
const vm = page.$vm;
currentAddress.value = vm.useAddress;
})
1***@163.com
我写了的,还是不行,感觉是vue3不支持这个方法
2023-12-25 14:37
弄月
回复 1***@163.com: 以下代码亲测可用 ``` export function getPrevPage(preIndex = 1){
const pages = getCurrentPages();
const prevPage = pages[pages.length - preIndex - 1];
return prevPage?.$vm ? prevPage.$vm : prevPage;
}
function onSelectBrand(item: any) {
brand.value = item?.brand_name || '请选择品牌';
}
defineExpose({
onSelectBrand
})
function onSelect(item: any) {
const prev = getPrevPage()
prev?.onSelectBrand(item);
uni.navigateBack();
}
2024-04-24 09:32