vue-router 在路由后无法识别来自组件的 $ref

vue-router doesn't recognize $ref from a component after routing

我是 Vuejs 和 vue-router 的新手,我阅读了很多文档和论坛来解决这个问题。

我可以让我的路由正常工作。但是我不能(轻松地)从路由的内容中获取“ref”。

我说“很容易”是因为我在“this.$children[0].$children[0].$refs” 上发现它对我来说不正确而且也很难维护。 我想要的是像“this.$refs”或“this.router[“foo”].$refs”这样简单的方法。

我将在元素中粘贴带有“ref”的 vue 文档基本示例。

HTML

<div id="app">
  <h1 ref="myrefInitial">Hello App!</h1>
  <p>
    <router-link to="/foo">Go to Foo</router-link>
    <router-link to="/bar">Go to Bar</router-link>
  </p>
  <router-view></router-view>
  <p>
    refs founds: {{getAllRefs}}
  </p>
</div>

<script src="index.js"></script>

JS

const Foo = {
 template: '<div ref="myrefFoo">foo</div>'
}
const Bar = {
  template: '<div ref="myrefBar">bar</div>'
}

const routes = [{
    path: '/foo',
    component: Foo
  },
  {
    path: '/bar',
    component: Bar
  }
]

const router = new VueRouter({
  routes // short for `routes: routes`
})

router.afterEach((to, from) => {
  console.log("going to " + to.fullPath)
  console.log(to);

  router.app.getAllRefs();
})

const app = new Vue({

router,
  computed: {
    getAllRefs: function(){
        return this.$refs
    }
  }
}).$mount('#app')

JsFiddle 示例 https://jsfiddle.net/3rdSenna/kaqqsrob/

最后我写了一个简单的 For 循环来挖掘每个 $refs 并找到子 $refs 名称直到匹配。它解决了我的问题。

但我相信@rinatdobr 的建议很适合我。