猫猫儿
猫猫儿
  • 发布:2020-08-10 22:58
  • 更新:2022-07-27 12:07
  • 阅读:10410

【UNIAPP坑与解决】VUE组件内部$getAppWebview出现Cannot read property '$getAppWebview' of undefined

分类:uni-app

开发当中,封装了一个vue组件,内部有webview。
为了获取这个webview的对象,又需要获取当前页面对象,于是查阅文档采用

this.$scope.$getAppWebview()

但运行时反复出现

Cannot read property '$getAppWebview' of undefined

起初以为是自己拼写和上下文的问题,查阅社区也没有相关讨论。
后来反复验证,发现vue组件内部不能调用这个方法,页面当中正常。
于是后来通过以下方式实现:

this.$parent.$scope.$getAppWebview();

不知道是不是BUG,但先发一篇文章,记录一下,万一有人遇到了呢

4 关注 分享
1***@qq.com w***@outlook.com r***@qq.com 1***@qq.com

要回复文章请先登录注册

夏日微凉

夏日微凉

回复 夏日微凉 :
怎么回事啊
2022-07-27 12:07
夏日微凉

夏日微凉

let pages = getCurrentPages(); //getCurrentPages() 函数用于获取当前页面栈的实例
let page = pages[pages.length - 1];
plus.navigator.setFullscreen(true); //设置应用是否全屏显示
this.currentWebview = page.$getAppWebview();
写的一个二维码,跳转其他页面两次,返回后白屏
2022-07-27 12:07
7***@qq.com

7***@qq.com

1、onread()生命周期:
var webviewNew = this.$scope.$getAppWebview() || this.$parent.$scope.$getAppWebview();
2、然后写个递归函数,直至获取到webviewNew
methods:{
// 处理currentWebview获取延时问题
getWebview(currentWebview){
let that = this;
// console.log("currentWebview.children()[0]",currentWebview.children()[0])
if(currentWebview&&currentWebview.children()[0]){
wv = currentWebview.children()[0]
wv.setStyle({top:155,bottom:0})
}else{
setTimeout(function() {
// 递归函数直到获取到currentWebview.children()[0]
that.getWebview(currentWebview)
}, 200);
}
},
}
2022-07-04 17:51
r***@qq.com

r***@qq.com

bjhjjj
2021-06-29 14:16
8***@qq.com

8***@qq.com

同样的问题,按照作者的方法还是没用,不知道咋回事,我打开的是uni-app给的演示示例
2021-06-29 14:12
1***@qq.com

1***@qq.com

也还是不可以呢
2020-12-21 13:38
风云杭州

风云杭州

关注,用uniapp开发微信小程序,运行的时候出现错误:Cannot read property '$$' of undefined
2020-09-18 14:43
4***@qq.com

4***@qq.com

应该是层级。。我的太多层了,找不到
2020-08-20 10:58
1***@qq.com

1***@qq.com

说来也巧,我今天遇到的这个问题 搜答案 全网就搜到你这一个,而且解决了 感谢老铁
2020-08-19 14:35
猫猫儿

猫猫儿 (作者)

回复 a***@gmail.com :
这个获取到的是vue页面的对象,然后再通过childrens获取子webview,nvue不通用
nvue可以直接用ref获取webview对象,然后进行操作,API可以参考weex的<web>组件的文档
2020-08-14 16:16