vue2中如何选中当前的数据,$event.currentTarget 这个是可以获取当前元素

 <li class="packageItem" @click="addClassFun(classIndex,$event)"
                v-for="(packItem,classIndex) in packageList">
              <div class="itemShow" :class="{toggle:classIndex==classNum}">
              <h2>{{packItem.productName}}</h2>
              <p>{{packItem.productAmt}}元:{{packItem.ticketAmt}}券</p>
                 <div class="fwitem">另赠送<span class="c-yellow">{{packItem.ticketGift}}券</span></div>
                 </div>
                 <input type="radio" name="package" value=""
                        :checked="classIndex==classNum"
                 >
               </li>
               
              

这里是获取当前dom
clipboard.png
当前dom打印出来了

clipboard.png

clipboard.png

当前套餐组件,这里的packagelist是所有的数据 我想要当前的数据的

destroyed(){
      bus.$emit('change',this.packageList);
    },

这个是要接受数据的组件

 created() {
     bus.$on('change', (packageList) =>
       this.packageList = packageList
     )},
阅读 11.6k
1 个回答

既然你都知道通过什么样的方式来修改active class了,为什么就不知道通过什么方式来修改当前数据呢,思路不都一样嘛。感觉就是有个小弯没绕过来。

首先在dada中定义一个变量用来保存当前的数据与当前的索引

data() {
  curData: null,
  classNum: 0
}

然后定义一个点击事件,用来修改curData与classNum的值,将你的addClassFun改一下名字

methods: {
  clickHandler (data, num) {
    this.curData = data;
    this.classNum = num;
  }
}

最后在模板中绑定click点击事件即可

<li class="packageItem" @click="clickHandler(packItem, classIndex)" v-for="(packItem,classIndex) in packageList">
    <div class="itemShow" :class="{toggle:classIndex==classNum}">
    ...
</li>

这样每点击一次,curData就会改变,等于当前的packItem。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题