仅在加载元素时运行 vue 组件

Posted

技术标签:

【中文标题】仅在加载元素时运行 vue 组件【英文标题】:Run vue component only if element loaded 【发布时间】:2018-03-13 16:19:58 【问题描述】:

我在 javascript 上定义了一个小的 vue.js 组件。

是否有任何优雅的方式仅在加载元素时实例化 vue 组件?

问题是我在其他不存在该元素的 html 中收到这些警告:

vue.js:485 [Vue warn]: Cannot find element: #item

因为它到处运行这个js

  new Vue(
    el: '#item',
  );

vue.js 中是如何处理的?

【问题讨论】:

您的问题可以通过上一篇文章解决:***.com/questions/29484431/… onload 不能在没有 #item 元素的 html 页面上工作 您是否使用 ajax 请求加载您的元素?我不明白为什么它在第一次加载时不存在 因为你可以有一个 index.html 和一个 不会给 Vue 带来问题,然后是一个 stuff.html 不会有任何 并且当 javascript vue.js 在该页面中执行时会抱怨,因为页面中不存在#item 元素 你不能只在带有#item 元素的文件上加载脚本吗? 【参考方案1】:

在创建实例之前测试元素。

if(document.getElementById("#item"))
  new Vue(
    el: '#item',
  );

【讨论】:

是的,我正在考虑这个,但对我来说看起来并不那么优雅,那么这是唯一的方法吗? 我不知道只有 vue 的方式。但是,这只是一个警告,这意味着您不应该在调试模式关闭的情况下在生产中看到它,如果这是任何调解的话。 好的,这个问题暂时悬而未决,如果没有人知道 vue-only 方式我接受这个答案

以上是关于仅在加载元素时运行 vue 组件的主要内容,如果未能解决你的问题,请参考以下文章

Vue 仅在组件加载时绑定类

Vue scss 样式加载因 mocamapck 失败

在加载 vue.js 时运行组件方法

我希望 useEffect 仅在道具更改时运行。不在初始运行[重复]

仅在一个 Vue 组件中包含外部 CSS 库

如何将组件内的 vue.js 方法转换为已创建的方法