我正在用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
--我试图从中获得一个对呈现它的对象的引用。当我在循环中的item对象和item的[DOMelement].__vue__
之间运行比较时,我得到了一个假的结果。
我知道item
和项的dom __vue__
属性是相同的,但在比较检查===
时,它们不会返回true。
发布于 2018-06-07 23:21:03
match方法中的Item与items中的item是完全相同的对象。数组只存储对象上的引用,item不是对象,那么你就有理由获得相同的引用。v-for也可以给你一个索引,用它来获取items数组items[idx]
中的属性
组件:
<icon
v-for="(item, index) in items"
@click="match(item, index, $el)">
{{ item.name }}
</icon>
方法:
match(item, index, el){
console.log(this.items[index])
}
发布于 2018-06-08 09:56:29
我设法解决了这个问题,方法是在自身上存储一个引用。
<icon
v-for="item in items"
:itemObj="item"
@click="match(item, $el)">
{{ item.name }}
</icon>
然后..。
match(item, el){
console.log(item === el.__vue__.itemObj) // true, woo!
}
https://stackoverflow.com/questions/50743986
复制相似问题