如何使用Vue.js获取呈现dom元素的组件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Vue.js获取呈现dom元素的组件相关的知识,希望对你有一定的参考价值。

如何使用Vue.js获取呈现dom元素的组件?

例如,假设您要检索哪个组件“拥有”用户选择的dom元素,您将如何操作? (它似乎是在开发工具中实现的,但我无法在文档中找到方法,也无法在SO上找到方法)

(我的意思是,给定DOM元素,我知道如何检索选择的元素)

免责声明:对于常见用例,这可能不是正确的解决方案。总是喜欢处理事件和合作。如果可以,在根组件中使用直接子组件引用

答案

我不知道这是安全还是官方支持,但假设您尝试从某些外部到Vue代码访问该组件,这将返回给定DOM元素的VueComponent对象(根据需要替换您自己的DOM选择器) ):

document.getElementById('foo').__vue__

如果在应用程序的根元素上使用它,它将返回Vue构造函数对象。

(这似乎适用于Vue 1.x和2.x.)

另一答案

这可能不是最优雅的解决方案,但您可以使用mixins来实现此目的:

var elemOwner = {
  mounted: function() {
    this.$el.setAttribute("isVueComponent", this.$options.name);
  }
};

只要将mixin设置为您需要的组件,当您单击一个元素时,您可以测试属性以查看其中是否有组件名称。

有关更完整的示例,请参阅此codepen:https://codepen.io/huntleth/pen/EpEWjJ

单击较小的蓝色方块将返回呈现它的组件的组件名称。

编辑 - 应该注意的是,这显然只有在元素实际位于组件根元素内时才有效。我认为几乎所有用途都是如此。

另一答案

获取this.$parent是指组件的父级。

以上是关于如何使用Vue.js获取呈现dom元素的组件的主要内容,如果未能解决你的问题,请参考以下文章

vue.js中ref和$refs的使用及示例讲解

如何获取未使用 javascript 呈现的 dom 元素?

vue.js怎样解决按钮多次点击重复提交

vue.js 中slot 用处大(转载)

如何让 DOM 呈现对 VUE.js 项目中计算数据的更改

销毁父组件时,UIkit 模态元素不会从 DOM 中删除(Vue.js)