`
行走的胖胖
  • 浏览: 1739 次
  • 性别: Icon_minigender_2
  • 来自: 河南
社区版块
存档分类
最新评论

小试牛刀之vue入门小例子-----购物车

    博客分类:
  • vue
阅读更多

 

      话说vue出来之后好像很火的样子,减少了代码量,直接操作数据,还不操纵很繁重的DOM,写完直接打包扔给后台,你想怎么办就怎么办吧!总之来说就是现阶段很火的技术.程度你懂得大笑   

    vue是什么呢?vue是现在很火的一个前端MVVM框架,它以数据驱动和组件化的思想构建,与angular和react并称前端三大框架。相比angular和react,vue更加轻巧、高性能、也很容易上手。这些都是官方的说法,再核心的或者api直接去vue官网look look吧.那就话不多说,直接上代码,亲测,暂时没问题(友情提示:用的vue版本是2.x.x)

    下面就直接来代码吧!最实在...

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>购物车</title>
  <link rel="stylesheet" href="node_modules/bootstrap/dist/css/bootstrap.css">
  <script type="text/javascript" src="js/vue.js"></script>
  <style type="text/css" media="screen">
  a,p,span{
    cursor: pointer;
  }
  a:visited,a:hover{
    text-decoration: none;
  }
  .check{
    width: 20px;
    height: 19px;
    display: inline-block;
    vertical-align: bottom;
    background: url("img/check.jpg");
  }
  .isCheck{
    background: url("img/checked.png")
  }
  .input_pro{
    width: 30px;
  }
  .pro a{
    width: 20px;
    height:26px;
    display: inline-block;
    border:1px solid #ccc;
    text-align: center;
    vertical-align: bottom;
  }
  .footer p{
    float: right;
    margin-left: 10px;
  }
  .footer span{
    margin-left: 10px;
  }

  </style>
</head>
<body>
<div id="app">
  <h4>购物清单</h4>
  <table class="table">
    <thead>
      <tr>
        <th><span class="check" :class="{'isCheck':isSelectAll}" @click="selectProduct(isSelectAll)"></span> 全选</th>
        <th>商品详情</th>
        <th>数量</th>
        <th>单价(元)</th>
        <th>金额(元)</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="(item,index) in productList">
        <td><span class="check" @click="item.select=!item.select" :class="{'isCheck':item.select}"></span></td>
        <td>{{item.pro_name}}</td>
        <td class="pro"><a href="javascript:;" @click="item.pro_num--">-</a><input type="text" class="input_pro" v-model="item.pro_num"><a href="javascript:;" @click="item.pro_num++">+</a></td>
        <td>¥{{item.pro_price}}.00</td>
        <td>¥{{item.pro_price*item.pro_num}}.00</td>
        <td><button type="button" @click="removePro(index)">删除</button></td>
      </tr>
    </tbody>
  </table>
  <div class="footer">
    <span><a href="javascript:;" title="" @click="deletePro">删除所选商品</a></span>
    <span>继续购物</span>
    <p><a href="javascript:;" class="">去结算</a></p>
    <p>¥<span>{{getTotal.totalPrice}}</span></p>
    <p><span>{{getTotal.totalNum}}</span>件商品总计(不含运费):</p>
  </div>
</div>
<script type="text/javascript">
  new Vue({
    el:"#app",
    data:{
      productList:[
      {
        'pro_name':'项链',
        'pro_num':1,
        'pro_price':4000
      },
      {
        'pro_name':'手镯',
        'pro_num':1,
        'pro_price':2000
      },
      {
        'pro_name':'戒指',
        'pro_num':1,
        'pro_price':8000
      },
      {
        'pro_name':'耳坠',
        'pro_num':1,
        'pro_price':1000
      }
      ]
    },
    methods:{
      //全选与取消全选
      selectProduct:function(_isSelect){
        for(var i=0;i<this.productList.length;i++){
          this.productList[i].select = !_isSelect;
        }
      },
      //删除单条
      removePro:function(index){
        this.productList.splice(index,1)
      },
      //删除选中的
      deletePro:function(){
        this.productList=this.productList.filter(function(item){return !item.select})
      }
    },
    mounted:function(){
      var _this=this;
      //为productList添加select(是否选中)字段
      this.productList.map(function(item){
        _this.$set(item,'select',false);
      })
    },
   computed:{
    //检测全选
     isSelectAll:function(){
        return this.productList.every(function (val) { return val.select});
    },
    //获取总件数和价格
    getTotal:function(){
      //获取select为true的数据
      var _proList=this.productList.filter(function(val){return val.select }),totalPrice=0;
      for(var i=0;i<_proList.length;i++){
        totalPrice+=_proList[i].pro_num*_proList[i].pro_price;
      }
      return {totalNum:_proList.length,totalPrice:totalPrice}
    }

   }
  })
</script>
</body>
</html>

 效果图如下:

 

 好吧!简单粗暴,此例子先到这里吧!嘿嘿,有错误及时call me 哦!微笑

  • 大小: 16.4 KB
分享到:
评论
2 楼 羊肉小笼包 2017-12-19  
像素大佬666
1 楼 PgGAI 2017-12-19  
厉害厉害厉害厉害厉害厉害厉害

相关推荐

    Vue入门学习小案例-小王记事本

    Vue入门学习小案例-小王记事本 Vue入门学习小案例-小王记事本 Vue入门学习小案例-小王记事本 Vue入门学习小案例-小王记事本 Vue入门学习小案例-小王记事本 Vue入门学习小案例-小王记事本 Vue入门学习小案例-小王...

    vue3.0 vue-quill-editor.rar

    Vue-Quill-Editor是一款基于Quill的 Vue.js 富文本编辑器组件,提供了丰富的文本格式化选项,如字体、字号、颜色、列表等,同时支持图片和视频的插入。在Vue3.0环境下使用Vue-Quill-Editor,需要确保组件与新版本的...

    vue3-real-admin纯静态后台模板

    vue3-real-admin纯静态后台模板vue3-real-admin纯静态后台模板vue3-real-admin纯静态后台模板vue3-real-admin纯静态后台模板vue3-real-admin纯静态后台模板vue3-real-admin纯静态后台模板vue3-real-admin纯静态后台...

    vue3-element-admin:vue3 + element-plus + typescript 后台管理系统

    vue3-element-admin 是【有来开源组织】基于 Vue3 + Vite4 + TypeScript + Element-Plus + Pinia 等前端主流技术栈从0到1搭建后台管理系统模板(前后端开源)。 后端是基于 Spring Boot 3.0 、Spring Security 6.0 ...

    vue3-element-admin-2.0.1.zip

    vue3-element-admin-2.0.1.zip

    详解TypeScript+Vue 插件 vue-class-component的使用总结

    npm install vue-class-component vue-property-decorator --save-dev 一梭子直接干; 其次,咱来说说它们的区别与联系: vue-property-decorator社区出品;vue-class-component官方出品 vue-class-component提供了...

    使用vue2-water-marker组件实现水印预览

    使用vue2-water-marker组件实现水印预览

    uniapp-vue3-vite-windicss

    uniapp-vue3-vite-windicssuniapp-vue3-vite-windicssuniapp-vue3-vite-windicssuniapp-vue3-vite-windicssuniapp-vue3-vite-windicssuniapp-vue3-vite-windicssuniapp-vue3-vite-windicssuniapp-vue3-vite-...

    基于laravel-vue--vux-element的视频投票系统.zip

    基于laravel-vue--vux-element的视频投票系统 基于laravel-vue--vux-element的视频投票系统 基于laravel-vue--vux-element的视频投票系统 基于laravel-vue--vux-element的视频投票系统 基于laravel-vue--vux-element...

    vue 入门,v-model数据绑定

    本篇文章将深入探讨Vue的核心概念之一——`v-model`数据绑定,帮助初学者快速入门。 `v-model`是Vue中的一个指令,用于实现双向数据绑定,它使得视图(View)与模型(Model)之间的数据同步变得简单。这种机制让...

    vue vue-seamless-scroll 数据滚动

    vue vue-seamless-scroll 数据滚动 list 数据量少 时,不运行滚动

    vue-admin-template-master(vue-element-admin-master的精简版本)

    (vue-element-admin-master的精简版本),快速搭建后台管理系统,是4.4.0版本。其中包含相匹配版本的node.js安装包,省心啊。首先安装node.js,然后cmd看一下(node -v),成功之后,就可以用vs打开精简版本的vue-...

    前端开源库-vue-image-compare

    - **滑动比较**:Vue-image-compare 提供了一个可滑动的层,用户可以通过移动滑块来比较两张图片的不同之处。 - **响应式设计**:该库支持不同设备和屏幕尺寸,确保在各种环境下都能良好工作。 - **自定义样式**:...

    vue入门小例子

    在“vue入门小例子”这个项目中,我们可以看到作者通过实践Vue.js的基本特性来学习和理解这个框架。这里我们将深入探讨Vue.js的核心概念和在`TestVUE.html`和`vue.js`这两个文件中可能涉及的知识点。 首先,Vue.js...

    vue-admin-template-3.8.0.zip

    vue-admin-template前端页面开发框架,你可以把 vue-element-admin当做工具箱或者集成方案仓库,在 vue-admin-template 的基础上进行二次开发,想要什么功能或者组件就去 vue-element-admin 那里复制过来。...

    基于Vue的vue-admin-better管理后台框架设计源码

    vue-admin-better是一个基于Vue开发的国内首个纯净的vue3管理后台框架,包含197个文件,其中包括76个JavaScript文件、72个Vue文件、7个JPG图片文件、7个SCSS文件、6个PNG图片文件、5个CSS文件、4个JSON文件和4个SVG...

    hslb-vue3-elementplus-admin 登录和找回密码功能实现

    hslb-vue3-elementplus-admin 登录和找回密码功能实现 hslb-vue3-elementplus-admin 登录和找回密码功能实现hslb-vue3-elementplus-admin 登录和找回密码功能实现hslb-vue3-elementplus-admin 登录和找回密码...

    vue-print-nb 兼容低版本浏览器

    在开发过程中,我们经常需要处理各种打印需求,这正是 `vue-print-nb` 插件的作用所在。`vue-print-nb` 是一个针对 Vue.js 应用程序设计的打印插件,它允许开发者方便地实现页面或组件的打印功能。标题提到的“vue-...

    Vue reactive ref v-bind 语法示例演示代码

    Vue reactive ref v-bind 语法示例演示代码Vue reactive ref v-bind 语法示例演示代码Vue reactive ref v-bind 语法示例演示代码Vue reactive ref v-bind 语法示例演示代码Vue reactive ref v-bind 语法示例演示代码...

    Vue3-admin-js 是Vue3后台管理系统项目,基于vue3+Element-plus实现。.zip

    Vue3,springboot,element-ui使用技巧,实战应用开发小系统参考资料,源码参考。 详细介绍了一些Qt框架的各种功能和模块,以及如何使用Qt进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的开发者...

Global site tag (gtag.js) - Google Analytics