用vue实现购物车增删改

<template>
  <div>
    <table>
      <thead>
        <tr>
          <!-- 绑定全选事件 -->
          <th><input type="checkbox" @change="addAll" />全选</th>
          <th>商品名</th>
          <th>单价</th>
          <th>数量</th>
          <th>小计</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <!-- 先让他们循环 用结构语法写-->
        <tr v-for="({ name, price, num }, i) in products" :key="i">
          <!-- v-model要存data的值 -->
          <td><input type="checkbox" v-model="products[i].checked" /></td>
          <td>{{ name }}</td>
          <td>{{ price }}</td>
          <td>
            <!-- products是一个数组 下标可以找到对象 意思就是这个数组下的某个对象的某个属性 -->
            <button @click="products[i].num--" :disabled="num == 1">-</button>
            <!-- 这是个双向绑定 -->
            <input type="text" v-model="products[i].num" />
            <button @click="products[i].num++">+</button>
          </td>
          <td>{{ num * price }}</td>
          <!-- 怎么删除数组中的某个元素:splice(i,n) 删除序号i开始的n个元素-->
          <td>
            <button @click="products.splice(i, 1)">删除</button>
          </td>
        </tr>
      </tbody>
      <tfoot>
        <tr>
          <td colspan="6">总价格:{{ sum }}</td>
        </tr>
      </tfoot>
    </table>
  </div>
</template>

<script>
export default {
  // 全选操作事件
  methods: {
    addAll(e) {
      //遍历每个元素的checked 都变成和全选一样
      this.products.forEach((p) => (p.checked = e.target.checked));
      console.log(e.target.checked);
    },
    removeP(i) {
      this.products.splice(i, 1);
    },
  },
  computed: {
    sum() {
      // 只加勾选了的
      return this.products.reduce((s, p) => s + p.price * p.num * p.checked, 0);
    },
  },
  data() {
    return {
      products: [
        { name: "草莓", price: 7, num: 18, checked: true },
        { name: "橘子", price: 8, num: 11, checked: false },
        { name: "西瓜", price: 9, num: 12, checked: true },
        { name: "哈密瓜", price: 10, num: 13, checked: false },
        { name: "苹果", price: 11, num: 14, checked: false },
      ],
    };
  },
};
</script>

<style lang="scss" scoped>
//写table样式
table {
  //点击文字的时候不要有选中效果
  user-select: none;
  //边框合并,如果不把单元格合并单元格和单元格之间有缝隙
  border-collapse: collapse;

  // 给td和th加样式
  th,
  td {
    //给边
    border: 1px solid rgb(86, 86, 155);
    //给内容和边框之间的间距 上下5px 左右30px
    padding: 5px 30px;
    //让文字居中
    text-align: center;
  }
  //属性选择器
  [type="text"] {
    width: 50px;
    text-align: center;
  }
}
</style>

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用Vue和Element UI可以非常方便地实现表格的增删功能。 首先,我们需要在Vue中引入Element UI的Table组件,用于显示表格数据。可以通过在Vue组件中引入以下代码来实现: ```javascript <template> <el-table :data="tableData"> <!-- 表格列的定义 --> </el-table> </template> <script> import { Table } from 'element-ui'; export default { components: { 'el-table': Table }, data() { return { tableData: [] // 表格数据 }; } } </script> ``` 接下来,我们需要在data函数中定义tableData,用于存储表格的数据。可以通过向tableData数组中添加对象的方式来定义表格的行数据。例如: ```javascript data() { return { tableData: [ { name: 'Alice', age: 20 }, { name: 'Bob', age: 25 }, { name: 'Charlie', age: 30 } ] }; } ``` 然后,我们可以使用Element UI提供的Button组件来实现新增、删除和编辑操作。例如: ```javascript <el-button @click="addRow">新增</el-button> <el-button @click="deleteRow">删除</el-button> <el-button @click="editRow">编辑</el-button> ``` 在Vue组件的methods中定义对应的方法来实现表格的增删功能。例如: ```javascript methods: { // 新增一行数据 addRow() { this.tableData.push({ name: '', age: '' }); }, // 删除选中的行数据 deleteRow() { const selectedRows = this.$refs.table.selection; selectedRows.forEach(row => { const index = this.tableData.indexOf(row); this.tableData.splice(index, 1); }); }, // 编辑选中的行数据 editRow() { // 编辑操作 } } ``` 通过以上步骤,即可使用Vue和Element UI实现表格的增删功能。根据具体需求,可以进一步自定义表格列的定义、编辑操作等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值