• 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;
                 }
              }
            }
    
    
    
     


               

    虽然现在走得很慢,但不会一直这么慢
  • 相关阅读:
    FCN网络的训练——以SIFT-Flow 数据集为例
    putty+xming远程登录Ubuntu16.04图形界面
    图像分割实验:FCN数据集制作,网络模型定义,网络训练(提供数据集和模型文件,以供参考)
    caffe初步实践---------使用训练好的模型完成语义分割任务
    设计模式
    面试点
    session和cookie有什么区别?
    如何实现session的共享?
    WebService 工作原理及实例教程
    Kafka
  • 原文地址:https://www.cnblogs.com/xxm980617/p/10492384.html
Copyright © 2020-2023  润新知