点击事件传参

点击事件传参

1、 购物车案例

目标

完成商品浏览和删除功能, 当无数据给用户提示

需求:

  • 需求1: 根据给的初始数据, 把购物车页面铺设出来
  • 需求2: 点击对应删除按钮, 删除对应数据
  • 需求3: 当数据没有了, 显示一条提示消息

完成代码:

<template>
  <div id="app">
    <table class="tb">
      <tr >
        <th>编号</th>
        <th>品牌名称</th>
        <th>创立时间</th>
        <th>操作</th>
      </tr>
      <!-- 循环渲染的元素tr -->
      <tr v-for="(item,index) in list"  :key= "index">
        <td>{{ item.id }}</td>
        <td>{{ item.name }}</td>
        <td>{{ item.time }}</td>
        <td>
          <button @click="del(index)">删除</button>
        </td>
      </tr>
      <tr>
        <td colspan="4" v-show="end" >没有数据咯~</td>
      </tr>
    </table>
  </div>
</template>

<script>
// v-for 循环添加数据
// 事件点击  删除整行   找this.list
// 判断有无数据  显示v-show  
export default {
  data() {
    return {
      end:false,
      list: [
        { id: 1, name: "奔驰", time: "2020-08-01" },
        { id: 2, name: "宝马", time: "2020-08-02" },
        { id: 3, name: "奥迪", time: "2020-08-03" },
      ],
    }
  },
  methods : {
    del(newArr) {
      this.list.splice(newArr,1)  
      if (this.list.length === 0) {
       this.end = true
    } 
    },
    
  }
  
};
</script>

<style>
#app {
  width: 600px;
  margin: 10px auto;
}

.tb {
  border-collapse: collapse;
  width: 100%;
}

.tb th {
  background-color: #0094ff;
  color: white;
}

.tb td,
.tb th {
  padding: 5px;
  border: 1px solid black;
  text-align: center;
}

.add {
  padding: 5px;
  border: 1px solid black;
  margin-bottom: 10px;
}
</style>

完成过程中,删除一直出错,不是删除本次点击的列表行,是因为点击事件没有传参
<button @click="del(index)">删除</button>
在这里插入图片描述

2、加加减减

目标

点击生成按钮, 新增一个li(随机数字)和删除按钮, 点击删除按钮, 删除对应的li和值

完成代码:

<template>
  <div id="app">
    <ul>
      <li v-for="(item,index) in arr " :key="index" >
        <span>{{ item }}</span>
        <button @click="del(index)">删除</button>
      </li>
    </ul>
    <button @click="add">生成</button>
  </div>
</template>

<script>
// 生成  点击事件  生成随机数 添加一个li 和按钮
export default {
  data() {
    return {
      arr:[],    
    };
  },
  methods : {
    add() {
    //   随机数
      let number = Math.floor(Math.random() * 99)
      this.arr.push(number)
      console.log(this.arr.item)
    } ,
    del(index) {
        this.arr.splice(index,1)
    }
  }
}
</script>

同样的问题,绝了!!!
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue 3中,可以通过以下几种方式实现点击事件传参: 1. 使用箭头函数定义click事件的回调函数,将需要传递的参数作为箭头函数的参数。例如,在模板中定义一个click事件,并将需要传递的参数作为参数传递给回调函数: ```html <template> <div> <button @click="handleClick(item)">点击按钮</button> </div> </template> <script> export default { data() { return { item: { id: 1, name: 'example' } } }, methods: { handleClick(item) { console.log(item); // 在这里可以对item进行操作或者触发其他操作 } } } </script> ``` 这样,当点击按钮时,会将item作为参数传递给handleClick方法。 2. 使用自定义事件来传递参数。在setup函数中,可以通过使用emit来触发自定义事件,并将需要传递的参数作为emit的第二个参数。例如: ```javascript import { ref, onMounted } from 'vue'; export default { setup() { const item = ref({ id: 1, name: 'example' }); const handleClick = () => { emit('select', item.value); }; return { handleClick }; } }; ``` 这样,在模板中可以使用自定义事件select,并将item作为参数传递给它。例如: ```html <template> <div> <button @click="handleClick">点击按钮</button> </div> </template> <script> export default { emits: ['select'], setup(props, { emit }) { const item = { id: 1, name: 'example' }; const handleClick = () => { emit('select', item); }; return { handleClick }; } } </script> ``` 在这个例子中,当点击按钮时,会触发自定义事件select,并将item作为参数传递给它。 总结一下,在Vue 3中,可以通过箭头函数定义click事件的回调函数,将需要传递的参数作为箭头函数的参数,或者使用自定义事件来传递参数。这样就可以实现在点击事件中传递参数的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值