使用 Vue + Flex 编写一个简易的购物车

页面布局采用 flex 布局,元素渲染、用户操作采用 Vue。(1)首先我们将商品信息放在数组中,并将该数组保存在 Vue 实例的数据对象中。商品信息包括:id、图片 url、商品名、商品单价、库存、当前选择数量。let shopArr = [ {id: 1, url: './img/1.jpg', title: '大豆家 方头奶奶鞋', money: 118, num: 20, need: 0}, {id: 2, url: './img/2.jpg', title: '家宝路转角水槽
摘要由CSDN通过智能技术生成

页面布局采用 flex 布局,元素渲染、用户操作采用 Vue。
(ps:对这几天学习 Vue 的一个简单实践,略菜,轻喷 QAQ)

(1)数组保存商品信息

首先我们将商品信息放在数组中,并将该数组保存在 Vue 实例的数据对象中。
商品信息包括:id、图片 url、商品名、商品单价、库存、当前选择数量。

let shopArr = [
    {
   id: 1, url: './img/1.jpg', title: '大豆家 方头奶奶鞋', money: 118, num: 20, need: 0},
    {
   id: 2, url: './img/2.jpg', title: '家宝路转角水槽', money: 799, num: 10, need: 0},
    {
   id: 3, url: './img/3.jpg', title: 'LANCOME秋冬限量迷雾红管唇膏', money: 235, num: 33, need: 0},
    {
   id: 4, url: './img/4.jpg', title: '汽车盲点变道辅助系统', money: 1980, num: 8, need: 0},
    {
   id: 5, url: './img/5.jpg', title: 'PUMA芥末绿复古老爹鞋', money: 529, num: 35, need: 0},
    {
   id: 6, url: './img/6.jpg', title: '美之岛主雾面哑光丝绒口红', money: 599, num: 18, need: 0},
    {
   id: 7, url: './img/7.jpg', title: '马儿跑 开马瑞眼镜', money: 22000, num: 6, need: 0},
    {
   id: 8, url: './img/8.jpg', title: '不二橘英伦风切尔西鞋', money: 308, num: 33, need: 0},
    {
   id: 9, url: './img/9.jpg', title: 'PUMA克莱德联名水晶鞋', money: 487, num: 10, need: 0}
   ];

(2)v-for 渲染商品列表

接下来利用 v-for 渲染商品列表。

<div id="app">
   <p>总价:{
  { sum }}</p>
   <ul>
    <li v-for="(item, index) in arr" v-bind:key="item.id" v-if="item.num > 0">
     <div>
      <img v-bind:src="item.url" alt="boom">
     </div>
     <div>
      <span>{
  { item.title }}</span>
      <span>$:{
  { item.money }}</span>
      <span>库存:{
  { item.num }}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
A: 首先需要在项目中安装vue和element-ui: ```bash npm install vue element-ui --save-dev ``` 接着,创建一个名为Cart.vue的组件,在模板中使用element-ui的组件实现购物的基本功能: ```html <template> <div> <h2>购物</h2> <el-table :data="cart" style="width: 100%"> <el-table-column prop="name" label="商品名称"></el-table-column> <el-table-column prop="price" label="价格"></el-table-column> <el-table-column prop="quantity" label="数量"> <template slot-scope="{ row }"> <el-input-number v-model="row.quantity" :min="1" @change="updateCart"></el-input-number> </template> </el-table-column> <el-table-column prop="subtotal" label="小计"></el-table-column> <el-table-column label="操作"> <template slot-scope="{ row }"> <el-button type="danger" size="small" @click="removeFromCart(row)">删除</el-button> </template> </el-table-column> </el-table> <p>总计:{{total}}</p> </div> </template> <script> export default { data() { return { cart: [ { name: "商品1", price: 10, quantity: 1 }, { name: "商品2", price: 20, quantity: 1 }, { name: "商品3", price: 30, quantity: 1 }, ] }; }, computed: { total() { return this.cart.reduce((sum, item) => sum + item.subtotal, 0); } }, methods: { updateCart() { this.cart.forEach(item => { item.subtotal = item.price * item.quantity; }); }, removeFromCart(item) { const index = this.cart.indexOf(item); if (index !== -1) { this.cart.splice(index, 1); } } } }; </script> ``` 在上面的代码中,我们展示了一个包含三个商品的购物,并且可以通过元素ui的el-input-number组件调整每个商品的数量。我们还计算了每个商品的小计,并展示了购物的总计。最后,我们还添加了一个删除按钮,可以从购物中删除商品。 要在项目中使用这个组件,只需要在父组件中导入并注册: ```html <template> <div> <Cart></Cart> </div> </template> <script> import Cart from "./Cart.vue"; export default { components: { Cart } }; </script> ``` 这样就实现了一个简单的购物
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值