vue中的一些注意事项

在使用v-for的时候,如果想要拿到下标:

v-for="(item,index) in products"

在原生的:     [1,2].foreach(function(value,index){

 console.log(value,index)

})

jquery:   $.each(function(index,value){

})

加载图片:  v-bind:src="item.productImg"


使用vue-resource的话他的    this.$http.get('url',{参数}).then(function(){

})

   其中this 指向vue   

例子:

  var vm = new Vue({
        el:"#app",
         data:{
            totalMoney:0,

            productList:[],

            checkAllflag:false,

            delFlag:false

        },
        filters:{
        },
        mounted:function(){
            this.carView()
         },
        methods:{
            catView:function(){
                var _this = this;
                this.$http.get("url").then(function(res){
                    _this.productList = res.body.result.list;
                     _this.totalMoney = res.body.result.totalMoney ;
                })
            }
        }

})


在mounted函数里面  :   mounted:function(){
this.$nextTick(function(){
vm.carView()
                                             })
                         }

es6的语法:methods:{
                            carView:function(){
                                this.$http.get("url").then(res=>{
                                    this.productList = res.body.result.list;
                                    this.totalMoney = res.body.result.totalMoney ;
                                    })
                                }
                           }

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

        }

全局过滤器: Vue.filter('money',function(value,type){
                return '¥'+value.toFixed(2)+type
                    })

注意:一般金额的小数是后端直接返回的,不许要前端做处理

过滤器传参使用函数  | formatMoney('元')

事件绑定:v-on:click="" 或者 @click=""

购物车加减功能: <div class="quantity">
                            <a href="javascript:void 0" v-on:click="changeMoney(item,-1)">-</a>
                            <input type="text" value="0" disabled  v-model="item.productQuentity">
                            <a href="javascript:void 0" v-on:click="changeMoney(item,1)">+</a>

                          </div>

    changeMoney:function(product,way){
            if(way>0){
            product.productQuentity++;
            }else{
            product.productQuentity--;
            if(product.productQuentity<1){
            product.productQuentity=1
            }
            }

            }


购物车的多选框: <div class="cart-item-check">
           <a href="javascript:void 0" class="item-check-btn" v-bind:class="{'check':item.checked}"                                         @click="selectedProduct(item)">
                                          <svg class="icon icon-ok"><use xlink:href="#icon-ok"></use></svg>
                                    </a>
                          </div>

selectedProduct:function(item){

            if(typeof item.checked == "undefined"){
            Vue.set(item,'checked',true)
            this.$set(item,'checked',true)//局部
            }else{
            item.checked=!item.checked

            }

        //实现了单选全部按钮 全选被选中
this.checkAllFlag = this.productList.every((val)=>{
return val.checked == true

            }

     this.calcTotalPrice()

}

购物车全选  取消全选:

 <div class="item-all-check">
        <a href="javascript:void 0">
              <span class="item-check-btn" :class="{'check':checkAllflag}" @click="checkAll(true)">
              <svg class="icon icon-ok"><use xlink:href="#icon-ok"></use></svg>
              </span>
              <span>全选</span>
         </a>
         </div>
         <div class="item-all-del">
               <a href="javascript:void 0" class="item-del-btn" @click="checkAll(false)"> 
                   <span>取消全选</span>
               </a>

 </div>

checkAll:function(flag){
            this.checkAllflag = flag;
            var _this=this;
            this.productList.forEach(function(item,index){
            if(typeof item.checked == "undefined"){
            _this.$set(item,'checked',_this.checkAllflag)//局部
            }else{
            item.checked=_this.checkAllflag
            }

            }

        this.calcTotalPrice()

        }

//计算总金额

calcTotalPrice:function(){
        var _this = this;
        this.totalMoney= 0;
        this.productList.forEach(function(item,index){
        if(item.checked){
        _this.totalMoney+=item.prodoctPrice*item.productQuentity
        }
        })

        }

删除商品:

delConfirm:function(){

        this.delFlag =true;
        this.curProduct = item;
        },
delProduct:function(){
        var index = this.productList.indexof(this.curProduct)

        this.productList.splice(index,1)
        this.delFlag =false;

        

        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值