【问题标题】:Vue.js $refs are undefinedVue.js $refs 未定义
【发布时间】:2019-02-23 14:24:01
【问题描述】:

我试图弄清楚为什么我的 Vue 实例的 refs 未定义。

使用 Laravel 项目中的 View.js

这里你可以看到我煽动了 Vue 实例

(资源\资产\js\app.js)

import AutoPopulateSelect from './components/results-text/AutoPopulateSelect.vue';

const app = new Vue({
    el: '#app',
    components: { 'auto-populate-select': AutoPopulateSelect }
});

这是我实际使用带有 ref 的组件的地方

(资源\视图\结果-文本\edit.blade.php):

<auto-populate-select ref="models">Vehicle Models</auto-populate-select>

我尝试过运行app.$refs,但这只会返回undefined。我已在控制台中完成此操作,因此应用程序将完成加载。

编辑:

刚刚注意到一些字符串,如果我在下面定义app 的地方运行console.log(app.$refs);,那么:

import AutoPopulateSelect from './components/results-text/AutoPopulateSelect.vue';

const app = new Vue({
    el: '#app',
    components: { 'auto-populate-select': AutoPopulateSelect }
});
console.log(app.$refs);

那么 ref 就在那里!似乎是当我尝试从控制台执行此操作时... Laravel 是否做了一些时髦的事情!?

【问题讨论】:

  • 为我工作:codepen.io/AndriusRimkus/pen/JawENW。正如肖恩所说,需要更多代码,因为您提供的代码没有问题。
  • @AndriusRimkus 查看更新
  • 您可以进行快速测试以确保您处理的是相同的appconsole.log(window.app === app); 或者明确地使用app 曝光并执行以下操作:window.appWhyNotWork = new Vue

标签: javascript vue.js


【解决方案1】:

https://vuejs.org/v2/api/index.html#ref

关于 ref 注册时间的重要说明:因为 refs 它们是由渲染函数创建的,你不能 在初始渲染时访问它们——它们还不存在! $refs 是 也是非反应性的,因此您不应尝试在 数据绑定模板。

你在哪里使用$refs?你能展示你的完整代码吗?

对于您更新的代码,我同意 Andrius Rimkus。您应该仔细检查您使用的app,或者在页面加载后在控制台中运行console.log(app),看看它是什么app对象。

而且,由于您使用的是 Vue,因此 Vue 中的大多数代码都可以使用 this 而不是 app

【讨论】:

  • 查看原帖:我试过运行 app.$refs 但这只是返回未定义。我已在控制台中完成此操作,因此应用程序将完成加载。
  • 您能展示您的代码或制作一个最小的应用程序进行测试吗?
  • 有点难做到这一点,因为我在 Laravel 安装中使用 Vue.js,这有帮助吗?我将添加文件名,说明我的代码在哪里。
【解决方案2】:

我知道这太晚了,但是对于遇到同样问题的人来说,

const app 必须在全局范围内声明,这为我解决了这个问题。

应该是这样的:

const window.app = new Vue({
  el: '#app',
  components: {
    'auto-populate-select': AutoPopulateSelect
  }
});

现在console.log(app.$refs); 应该显示来自其他 js 文件或内联函数的所有引用。

【讨论】:

  • 我不知道您在哪里测试了该代码,但声明 const window.app 是语法错误。 window 已经是一个对象,所以你只想在它上面声明app 属性,你不能把它变成一个常量。
猜你喜欢
  • 2019-06-18
  • 2020-03-31
  • 2016-12-15
  • 2018-09-19
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 2021-10-15
相关资源
最近更新 更多