我想在onPageShow里建立消息通道,然后有如下代码:
onPageShow(): void {
// this.subscribePhoto()
this.setWebMessgePort()
}
setWebMessgePort() {
try {
this.ports = this.controller.createWebMessagePorts();
this.ports[1].onMessageEvent((result: webview.WebMessage) => {
})
this.controller.postMessage("__init_port__", [this.ports[0]], '*')
} catch (error) {
console.log("发送消息有报错吗??", error)
}
}
然后报错Error: Init error. The WebviewController must be associated with a Web component,是不能在生命周期里调这个吗?
The WebviewController must be associated with a Web component错误是WebviewController没有和具体的Web组件关联,即Web组件和WebviewController还没有绑定
1、WebviewController可以控制Web组件各种行为。一个WebviewController对象只能控制一个Web组件,且必须在Web组件和WebviewController绑定后,才能调用WebviewController上的方法(静态方法除外)。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5\#webviewcontroller
2、onControllerAttached:当Controller成功绑定到Web组件时触发该回调,最早可以在onControllerAttached回调中使用WebviewController相关方法。参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5\#oncontrollerattached10