【发布时间】:2018-11-17 12:45:36
【问题描述】:
我正在 Vue 中渲染一个列表并尝试实现一些碰撞检测。我希望通过[DomElement].__vue__ 返回与“item”完全相同的对象
__vue__ 上是否有与项目对象匹配的属性?这个存储在哪里?
数据:
items: [
{ name: 'one' },
{ name: 'two' }
]
组件:
<icon
v-for="item in items"
@click="match(item, $el)">
{{ item.name }}
</icon>
方法:
match(item, el){
console.log(item === el.__vue__) // how can I make these match?
// el.__vue__.whereCanIFindItem ??
}
编辑:
关于我为什么这样做的更多信息:
我正在尝试将 selection.js 库转换为 Vue 组件。本质上,当单击 DOM 元素时,它会返回一个 event.target - 我试图从中获取对呈现它的对象的引用。当我在循环中的项目对象和项目的 [DOMelement].__vue__ 之间运行比较时,我得到一个错误的结果。
我知道 item 和项目的 dom __vue__ 属性是相同的,但在比较检查 === 中它们没有返回 true。
【问题讨论】:
-
为什么要这样获取
item? -
很复杂,这本质上是伪代码,试图找到答案
-
我想不出你需要这样做的原因,但
__vue__只是对根 Vue 的引用,所以items数据数组就是el.__vue__.items. -
match方法中的Item与items中的item完全相同。
标签: javascript vue.js vuejs2 vue-component