Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Framework 7 Vue如何阻止Firebase在不同页面上侦听更改?_Javascript_Firebase_Vue.js_Html Framework 7 - Fatal编程技术网

Javascript Framework 7 Vue如何阻止Firebase在不同页面上侦听更改?

Javascript Framework 7 Vue如何阻止Firebase在不同页面上侦听更改?,javascript,firebase,vue.js,html-framework-7,Javascript,Firebase,Vue.js,Html Framework 7,假设我有pageA,在那里我监听firebase文档的更改 export default { mounted() { this.$f7ready(() => { this.userChanges(); }) }, methods: { userChanges() { Firebase.database().ref('users/1').on('value', (resp) => { console.log('

假设我有
pageA
,在那里我监听firebase文档的更改

export default {
  mounted() {
    this.$f7ready(() => {
      this.userChanges();
    })
  },
  methods: {
    userChanges() {
      Firebase.database().ref('users/1').on('value', (resp) => {
        console.log('use data has changed');
      });
    }
  }
}
然后我使用
this..$f7.views.current.router.navigate('/pageB/')转到
pageB

如果在
pageB
上我对
/users/1
firebase路线进行了更改,我会看到控制台中的消息:
使用数据已更改
,即使我在不同的页面上

有没有办法避免这种行为,或者以某种方式卸载页面


我试图在使用导航离开
pageA
之前停止侦听器,但这似乎破坏了其他一些功能。

您是否正确地删除该特定数据库引用的侦听器?您必须将引用的路径保存在专用变量上才能执行此操作:

let userRef
export default {
    mounted() {
        this.$f7ready(() => {
            this.userChanges();
        })
    },
    methods: {
        userChanges() {
            userRef = Firebase.database().ref('users/1')
            userRef.on('value', (resp) => {
                console.log('use data has changed');
            });
        },
        detachListener() {
            userRef.off('value')
        }
    }
}
这样,您只需分离该特定引用的侦听器。在父级上调用它,将删除文档指定的所有侦听器:

您可以通过将单个侦听器作为参数传递给 off()。在没有参数的位置上调用off()将删除所有 该位置的侦听器


关于该主题的更多信息,请点击此处:

什么是
.off
中断?当您将引用传递给以前注册的处理程序时,它应该只删除该侦听器。。