【问题标题】:Uncaught ReferenceError: vm is not defined vue.js 2.0Uncaught ReferenceError: vm is not defined vue.js 2.0
【发布时间】:2017-08-04 14:08:39
【问题描述】:

我正在使用 Vue 2.0,但出现错误

(Uncaught ReferenceError: vm is not defined)

当我在控制台中使用vm.$data 或任何其他来检查属性时。我有最新版本的 vue.js 2.2.4。

【问题讨论】:

  • 什么是vm,你有没有把它分配到某个地方?

标签: vuejs2


【解决方案1】:

它真的很老了,但对我来说,问题是当我不专注于选项卡/打开不同的选项卡时,$vm 将变得不可用。我只需要重新关注打开 devtools 的选项卡,$vm 就会再次出现。

如果仅仅重新聚焦并不能解决问题,有时在 Vue devtools 的“组件”选项卡中漫游会有所帮助,直到看到组件名称旁边写着 $vm。

【讨论】:

    【解决方案2】:

    正如@Fiete 所述,vm 变量默认不可用。

    您需要在全局范围内定义vm 才能从控制台访问它。

    这样的东西应该可以工作

    var vm = new Vue({
      el: '#app',
      data: {
        a: 1
      },
      router,
      template: '<App/>',
      components: {
        App
      }
    });
    
    global.vm = vm; //Define your app variable globally
    

    现在您可以使用vm.$data.PROPERTYvm.PROPERTY

    【讨论】:

    【解决方案3】:

    vm 看起来像是在引用 Vue 实例,那么只需使用 this.$set 而不是 vm.$set。 (参与过使用@vue/cli 生成的项目)

    【讨论】:

      【解决方案4】:
      let app = new Vue({
        router,
        store,
        render: h => h(App)
      }).$mount('#app')
      
      
      global.vm = app;
      

      在任何地方,

      globalThis.vm.$subscribeTo...
      

      【讨论】:

        【解决方案5】:

        vm 变量默认不存在。并且 vuejs 没有设置该变量。如果你想调试你的 vuejs 应用程序,我推荐vuejs Chrome extension

        通过打开页面上的扩展程序,您可以选择要调试的组件。之后,您可以使用$vm0 变量访问选定的组件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-24
          • 1970-01-01
          • 1970-01-01
          • 2021-12-08
          • 2017-07-06
          • 2019-01-22
          • 2019-12-31
          • 2020-05-24
          相关资源
          最近更新 更多