uni-app view标签写 for循环 item变量不能传给 @click当参数?

uniapp 开发微信小程序的问题

这种标签的正常

<u-tag v-for="item in statuses" :key="item.id" :text="item.name" @click="filterByStatus(item.id)"></u-tag>

view标签不正常

<view class="item" v-for="(item,index) in items" :key="item.id" @click="gotoOrder(item.id)">

gotoOrder 里面接收的参数为 undefined

参考解决方案:uni-app view标签写 for循环 item变量不能传给 @click当参数 解决办法

有没有什么更好一点的方案?

阅读 3.4k
2 个回答

听说是由于 view 元素的绑定的 key 值有问题导致的 @click 事件没办法接收到传参。
查看一下是否每一项的 item 内都有绑定的 id 好像出现某一项绑定上去的 key 值是 undefined 就不行。


虽然但是,粗暴一点可以直接把下标(index)绑定给 key,有时间的话最好还是在处理数据的时候确保 item.id 一定存在。

直接传递item,不要传递item.id,防止某些id不存在的情况,具体想要什么数据在方法里面处理即可

<template>
  <view v-for="(item, index) in list" :key="index" @click="handleClick(item)">
    {{ item }}
  </view>
</template>

<script>
export default {
  data() {
    return {
      list: [1, 2, 3]
    }
  },
  methods: {
    handleClick(item) {
      console.log('item:', item)
    }
  }
}
</script>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题