首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过__vue__访问循环项的对象?

如何通过__vue__访问循环项的对象?
EN

Stack Overflow用户
提问于 2018-06-07 22:37:11
回答 2查看 304关注 0票数 0

我正在用Vue呈现一个列表,并尝试实现一些冲突检测。我希望通过[DomElement].__vue__返回与'item‘完全相同的对象

__vue__上是否有与项的对象匹配的属性?它存储在哪里?

数据:

代码语言:javascript
复制
items: [
    { name: 'one' }, 
    { name: 'two' }
]

组件:

代码语言:javascript
复制
<icon 
  v-for="item in items" 
  @click="match(item, $el)">
      
  {{ item.name }}
</icon>

方法:

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

发布于 2018-06-07 23:21:03

match方法中的Item与items中的item是完全相同的对象。数组只存储对象上的引用,item不是对象,那么你就有理由获得相同的引用。v-for也可以给你一个索引,用它来获取items数组items[idx]中的属性

组件:

代码语言:javascript
复制
<icon
  v-for="(item, index) in items" 
  @click="match(item, index, $el)">

  {{ item.name }}
</icon>

方法:

代码语言:javascript
复制
match(item, index, el){
    console.log(this.items[index])
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-08 09:56:29

我设法解决了这个问题,方法是在自身上存储一个引用。

代码语言:javascript
复制
<icon 
  v-for="item in items"
  :itemObj="item"
  @click="match(item, $el)">

  {{ item.name }}
</icon>

然后..。

代码语言:javascript
复制
match(item, el){
    console.log(item === el.__vue__.itemObj) // true, woo!
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50743986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档