每次路由更新时调用一个函数vue.js

时间:2017-08-10 00:26:15

标签: javascript vuejs2 vue-component vue-router intercom

我已在我的应用中集成了对讲机,每次我的网址更改时我都需要拨打window.Intercom('update');

我知道我可以在mounted()添加它,但我宁愿不修改我的所有组件,而是直接使用navigation guards来完成。 (主要是为了避免在10个不同的地方使用相同的代码。

目前我有:

router.afterEach((to, from) => {
  eventHub.$off(); // I use this for an other things, here is not important
  console.log(window.location.href ) // this prints the previous url
  window.Intercom('update'); // which means that this also uses the previous url
})

在更改网址之前运行intercom('update'),而我需要在网址更改后运行它。

是否有一个挂钩,当网址发生变化时才会运行? 我怎么能这样做?

由于

2 个答案:

答案 0 :(得分:9)

不确定这会有效,因为你已经拥有它似乎应该没问题但是这里......

尝试watching the $route object进行更改

new Vue({
  // ...
  watch: {
    '$route': function(to, from) {
      Intercom('update')
    }
  }
})

答案 1 :(得分:3)

我刚刚提出了菲尔以外的其他解决方案,你也可以使用Global Mixin。它将其方法或生命周期钩子合并到每个组件中。

Vue.mixin({
  mounted() {
    // do what you need
  }
})