zoukankan      html  css  js  c++  java
  • vue实现购物车和地址选配

    • 参考文献        vue.js官网
    • 项目演示:数据渲染,格式化数据,点击加,减号自动加减

        

    • 项目准备

          1. 项目css和js文件  https://github.com/4561231/hello_world

          2. 引入和安装vue-包管理工具

                      三种方式:

                                     方式一:直接引入连接

                                     方式二:将vue-resource包管理工具下载下来

                                     方式三:用npm管理工具(前提先在你的电脑上安装node环境)

                                                 第一步:

                                                

                                                第二步:默认回车,之后项目中会多出一个package.json

                                                

                                            第四步:安装vue-resource

                                               

                                           第五步:和上面类似安装vue

    • 核心功能
    • 具体实现和踩坑

             1)创建实例和获取数据

    new Vue({
        el:'#app',
        data:{
         
          productlist:[] 
        },
        //必须加mounted函数,这是页面初加载,如果不写这个函数,network中将请求不到数据
        mounted:function(){
              this.cartView();
        },
        methods:{
    
            cartView:function(){
                
            var _this=this;    //要保存这个this,
            this.$http.get('data/cartData.json',{'id':'123'}).then(function(res){
                      
              _this.productlist=res.data.result.list;   //这里的this已经不是实例对象了
            });
    
            }
        }
    
    });

            2)v-for()对数据渲染

        <li v-for="item of productlist">
        <div class="item-name">{{item.productName}}</div>

            3)踩坑:

                  踩坑一:浏览器提示XMLHttpRequest  cannot loadxxxxxxx  解决方案:https://www.cnblogs.com/xxm980617/p/10492211.html

                  踩坑二:Uncaught (in promise) Object    因为我们的请求是跨域的,所以必须在服务器下运行,windows可以开apache /wamp等服务器

                  踩坑三:之前因为在实例对象中没有加mounted函数,导致数据可以在浏览器的network中请求到,但是渲染失败  参考:https://cn.vuejs.org/v2/api/#mounted

        踩坑四:渲染图片的时候不能用传统的src="{{src="item.productImage"}}" 
    会报错如下:

    解决方案:

     

    2.对数据进行格式化

                              1)局部过滤器:在实例中创建的

    //局部过滤器
        filters:{
    
            formatMoney:function(value){
                return "$" + value.toFixed(2);
            }
        },

                              调用方式

               <div class="cart-tab-2">
               <div class="item-price">{{item.productPrice | formatMoney}}</div>
             2)全局过滤器

        Vue.filter('money',function(value,type){
        return '$' + value.toFixed(2)+type;
    });
                调用方式:
                 <div class="cart-tab-4">
                 <div class="item-price-total">{{item.productPrice*item.productQuantity | money('元')}}</div>
    
    
    
    3.点击+-号,实现自动增加


    cart.js中定义方法
    changeMoney:function(product,way){
             
             if(way>=1){ //判断参数是1还是-1
              product.productQuantity++;   //为1,数量增加
             }else{
                   product.productQuantity--;   //其他数量减少
                 if(product.productQuantity<1){  //购物车里的数量最少为1,所以还要判断一次是否小于一
                     product.productQuantity=1;
                 }
              }
            }
    
    
    
     


               

    虽然现在走得很慢,但不会一直这么慢
  • 相关阅读:
    怎样评价聚类结果好坏?
    libsvm 用在 婚介数据集中 预测 用户配对
    mac 常用操作
    mac 安装 tomcat 配置
    mac 安装 maven 配置
    mac 安装 java 配置
    mac 安装 photoshop CS6
    mac 应用程序安装目录
    JavaScript、ES5和ES6的介绍和区别
    css 两列自适应布局的4种思路
  • 原文地址:https://www.cnblogs.com/xxm980617/p/10492384.html
Copyright © 2011-2022 走看看