返回到应用程序后,NativeView捕获异常:TypeError

时间:2019-10-15 10:44:24

标签: nativescript

我的 Component_1 中有一个函数:

methods: {

    interactBoxToggel () {

        let page = this.$refs.Home.nativeView;
        let interactBox = page.getViewById( 'interactBox' );

        console.log( interactBox );

    }

} , 

mounted () {
    bus.$on( 'interactBoxToggel' , this.interactBoxToggel )
}

如果它是从 Component_1 内部

触发的,则始终有效

现在,我将其移植到 Component_2

methods: {

    buttonCotrol( buttonName ) {

        bus.$emit( 'interactBoxToggel' );
        console.log(buttonName);

    }

}

它也可以使用,但是如果我通过“滑动关闭”( Android 9全屏手势)退出应用程序,然后再次返回应用程序,并从 Component_2 内部调用它strong>,我会收到错误消息:

System.err: An uncaught Exception occurred on "main" thread.
System.err: Calling js method onTouch failed
System.err: TypeError: Cannot read property 'nativeView' of undefined
System.err: 
...

为什么会这样?我该怎么解决?

1 个答案:

答案 0 :(得分:1)

您每次在mounted回调中添加事件侦听器。关闭应用程序后,该组件将被销毁并在恢复时再次安装,因此您将有2个活动的侦听器,但对于该会话而言仅一个有效。关闭和打开的次数越多,您将添加的听众就越多。

您必须在侦听器销毁后将其删除。

    destroyed() {
        bus.$off("interactBoxToggel", this.interactBoxToggel);
    }