未捕获的类型错误:路由器推送 vueJs 后无法读取未定义的属性“$refs”

时间:2021-04-15 02:45:18

标签: javascript vue.js vuejs2 vue-router

我正在开发一个 vue 应用程序,我的功能是将它切换到其他页面并使用 $refs 加载一个对话框。但是,我不断收到错误消息“无法读取未定义的属性 '$refs'”。我知道当路由器切换页面时,它会转到创建的钩子并且尚未加载引用。我怎样才能等到 refs 加载?下面是我的代码!提前致谢!

openUpdateDetails(animalId) {
  this.$router
    .push(
      `/zoo/${
        this.$route.params.id
      }/animal/${animalId}/documents`
    )
    .finally(() => {
      this.$nextTick(() => {
        setTimeout(() => {
          this.$refs['panel'].$refs['animal-card'].handleAnimalDocument('change_animal');
        });
      });
    });
}

1 个答案:

答案 0 :(得分:0)

我找不到直接等待组件安装的方法。 但我找到了其他方法。

beforeRouteEnter(to, from, next) {
next(vm => {
  setTimeout(() => {
      vm.$refs['panel'].$refs['animal-card'].handleNewAmendment('change_animal');
  }, 200);
});

我在我要切换到的页面的计算属性之前添加了这个块。希望这对其他人有帮助!