Vue.js 简单购物车开发

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script  src="Vue.2.6.10.js"></script>
</head>
<style>
    [v-cloak]{
        display: none;
    }
    table{
        border: 1px solid #e9e9e9;
        border-collapse: collapse;
        border-spacing: 0;
        empty-cells: show;
    }
    th,td{
        padding: 8px 16px;
        border: 1px solid #e9e9e9;
        text-align: left;
    }
    th{
        background: #f7f7f7;
        color: #5c6b77;
        font-weight: 600;
        white-space: nowrap;
    }
</style>
<body>
    <div id="app" v-cloak>
        <template v-if = ‘list.length‘>
            <!-- 只有当列表不为空时才显示购物车列表 -->
            <table>
                <thead>
                    <tr>
                        <th></th>
                        <th>商品名称</th>
                        <th>商品单价</th>
                        <th>购买数量</th>
                        <th>操作</th>
                    </tr>
                </thead>
                <tbody>
                    <tr v-for = "(item,index) in list">
                        <td>{{ index + 1 }}</td>
                        <td>{{ item.name }}</td>
                        <td>{{ item.price }}</td>
                        <td>
                            <!-- 参数是商品在列表中的索引 -->
                            <!-- 按钮组是被包裹在带有v-for的tr中的 -->
                            <button
                                @click = ‘handleReduce(index)‘
                                :disabled = ‘item.count === 1‘
                            >-</button>
                            {{ item.count }}
                            <button @click = "handleAdd(index)">+</button>
                        </td>
                        <td>
                            <button @click = "handleRemove(index)">移除</button>
                        </td>
                    </tr>
                </tbody>
            </table>
            <div>总价:¥ {{ totalPrice }}</div>
        </template>
        <div v-else>购物车为空</div>
    </div>
</body>
<script>
    var app = new Vue({
       el:"#app",
       data:{
            list:[
                {
                    id:001,
                    name:‘报丧女妖‘,
                    price:2000,
                    count:1
                },
                {
                    id:002,
                    name:‘命运女神‘,
                    price:2300,
                    count:2
                },
                {
                    id:003,
                    name:‘独角兽‘,
                    price:1500,
                    count:4
                },
                {
                    id:004,
                    name:‘独角兽-菲尼克斯‘,
                    price:3000,
                    count:1
                },
                {
                    id:005,
                    name:‘红异端‘,
                    price:2600,
                    count:10
                }
            ]
       },
       computed: {
           totalPrice:function(){
               var total = 0;
               for(var i = 0;i<this.list.length;i++){
                   var item = this.list[i];
                   total += item.price*item.count;
               }
               return total.toString().replace(/\B(?=(\d{3}) + $)/g,‘,‘);
           }
       },
       methods: {
           handleReduce:function(index){
               if(this.list[index].count === 1) return;
               this.list[index].count--;
           },
           handleAdd:function(index){
               this.list[index].count++;
           },
           handleRemove:function(index){
               this.list.splice(index,1);//移除且无法在购物车界面恢复
           }
       },
    });
</script>
</html>

原文地址:https://www.cnblogs.com/linbudu/p/10847604.html

时间: 2024-10-10 09:40:11

Vue.js 简单购物车开发的相关文章

VUE.JS实现购物车功能

购物车是电商必备的功能,可以让用户一次性购买多个商品,常见的购物车实现方式有如下几种: 1. 用户更新购物车里的商品后,页面自动刷新. 2. 使用局部刷新功能,服务器端返回整个购物车的页面html 3. 服务器端返回JSON格式,使用模板引擎+dom操作更新页面 最近新学习了vue.js,一个轻量级的mvvm(Model-View-ViewModel),vue.js是数据驱动无须操作dom,它提供特殊的html语言,把dom和数据绑定在一起,一旦修改了数据,dom将会自动更新更新. 关于vue.

Flask Vue.js全栈开发

Flask Vue.js全栈开发 1. Flask Vue.js全栈开发教程系列 Flask Vue.js全栈开发|第1章:创建第一个Flask RESTful API Flask Vue.js全栈开发|第2章:Vue.js通过axios访问Flask RESTful API Flask Vue.js全栈开发|第3章:Flask设计User用户相关API Flask Vue.js全栈开发|第4章:Vue.js调用API实现用户注册/登录/退出 Flask Vue.js全栈开发|第5章:个人主页与

Vue.js项目的开发环境搭建与运行

写作背景:手上入一个用Vue框架写的微信公众号项目,根据公司安排,我负责项目源代码的验收工作(当然专业的工作检测会交给web开发人员,我只是想运行起来看一看). 1 开发环境安装步骤: (一)安装node.js(JavaScript运行环境runtime) 从node.js官网下载并安装node,安装过程很简单,一路“下一步”就可以完成. 完成之后,开发命令行工具,输入 node -v 如果出现相应的版本号,则说明安装成功. 另外,npm是node.js下的包管理器,npm能很好的和诸如webp

Vue.js简单入门

这篇文章我们将学习vue.js的基础语法,对于大家学习vue.js具有一定的参考借鉴价值,有需要的朋友们下面来一起看看. Vue.js是一个数据驱动的web界面库.Vue.js只聚焦于视图层,可以很容易的和其他库整合.代码压缩后只有24kb. 以下代码是Vue.js最简单的例子, 当 input 中的内容变化时,p 节点的内容会跟着变化. <!-- html --> <div id="demo"> <p>{{message}}</p> &

98、vue.js简单入门

本篇导航: 介绍与安装 vue常用指令 一.介绍与安装 vue是一套构建用户界面的JAVASCRIPT框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合. 1.安装 下载vue.js:https://cn.vuejs.org/v2/guide/installation.html 2.CDN 也可以不下载直接使用cdn https://cdn.jsdelivr.net/npm/vue 3.引用 <scrip

vue.js实战——购物车练习(包含全选功能)

vue.js实战第5章 54页的练习1 直接放代码好了,全选的部分搞了好久,代码好像有点啰嗦,好在实现功能了(*^▽^*) HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-sca

vue入门------简单购物车功能实现(全选,数量加减,价格加减)

简易购物车功能(无任何布局 主要是功能) 数量的加减 商品的总价钱 全选与全不选 删除(全选.价格 受影响) <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <div id="box"> 全选:<input type="checkbox" @click="handleAllChecked($event)&q

vue.js组件化开发实践

前言 公司以往制作一个H5活动,特别是有一定统一结构的活动都要每次用html.css.js滚一次重复的轮子,费时费力.后来接到了一个基于模板的活动发布系统的需求,于是就有了下面的内容. 开始 需求一到,接就是怎么实现,技术选型自然成为了第一个问题.鉴于目前web前端mvvm框架的流行,以及组件化开发方式的出现,决定采用vue进行开发. 这里首先简单说下web前端组件化开发方式的历程: 最早的组件化结构,或者叫做组件化1.0时代,代码结构可能如下: 1 - lib/components/calen

Vuex-一个专为 Vue.js 应用程序开发的状态管理模式

为什么会出现Vuex 非父子关系的组件如何进行通信?(Event Bus)bus.js import Vue from 'vue'; export default new Vue(); foo.vue import bus from './bus.js'; export default { methods: { changeBroData() { bus.$emit('changeBarData'); } } } bar.vue import bus from './bus.js'; expor