vue使用方法计算总金额

1、预览

2、index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0">
    <title>Title</title>
    <link rel="stylesheet" href="css/index.css">
</head>
<body>
<div id="app">
<!--<h2>{{title}}</h2>-->
    <li v-for="(item,index) in productList">
        <div >产品名称:{{item.productName}}</div>
        <dd v-for="part in item.parts" v-text="part.partsName"></dd>
        <div>价格:{{item.productPrice+"--------------------"+index}}</div>
        <div>数量:{{item.productQuentity}}</div>
        <div>金额:{{item.productPrice*item.productQuentity  | formatMoney}}</div>
        <div>金额:{{item.productPrice*item.productQuentity  | money("元")}}</div>
        <!--<img src="item.productImage" alt="">-->
        <!--<img src="{{item.productImage}}" alt="">-->
        <img v-bind:src="item.productImage" alt="">

        <a href="javascript:;" v-on:click="changeMoney(item,-1)">-</a>
        <a href="javascript:;" @click="changeMoney(item,1)">+</a>
        <input type="text" value="0" disabled   v-model="item.productQuentity">
        <!-- v-bind:class="{'check':item.checked}"这里的check用的是单引号-->
        <a href="javascript:;" class="item-check-btn" v-bind:class="{'check':item.checked}" @click="selectedProduct(item);">
        </a>
    </li>
    <div>
        <!--<span class="item-check-btn" :class="{'check':checkAllFlag}" @click="checkAllFlag=true"></span>-->
        <!--注意不要将true写成ture,还要将div写到vue的作用范围内的div中,即#app这个div中-->
        <span class="item-check-btn" :class="{'check':checkAllFlag}" @click="checkAll(true);"></span>
        <a href="" class="item-del-btn" @click="checkAll(false);">取消全选</a>
        <div class="item-total">
            总金额 <span class="total-price">{{totalCheckMoney| money("元")}}</span>
        </div>
    </div>
</div>

<script src="js/lib/vue.min.js"></script>
<script src="js/lib/vue-resource.min.js"></script>
<script src="js/cart.js"></script>
</body>
</html>

3、cart.js

/**
 * Created by kk on 2017/4/16.
 */
new Vue({
    el:"#app",
    data:{
        // title:"hello vue"
        totalMoney:0,
        productList:[],
        checkAllFlag:false,
        totalCheckMoney:0
    },
    filters:{
formatMoney:function (value) {
    return "¥"+value.toFixed(2)
}
    },
    mounted:function () {
        //类似于jquery中的ready方法
        this.$nextTick(function () {
            this.cartView();
        })

    },
    methods:{
        cartView:function () {
    // this.title="Vue hello"
            //var _this=this;
            // this.$http.get("data/cart.json",{"id":123}).then(function (res) {
            //     _this.productList=res.body.result. productList;
            //     _this.totalMoney=res.body.result.totalMoney;
            // });
//            ES6语法
            let _this=this;
            this.$http.get("data/cart.json",{"id":123}).then(res=> {
                this.productList=res.body.result. productList;
            this.totalMoney=res.body.result.totalMoney;
            });
},
        changeMoney:function (product,way) {
            if(way>0)
            {
                product.productQuentity++;
            }
            else{
                product.productQuentity--;
                if(product.productQuentity<1){
                    product.productQuentity=1;
                }
            }
            this.calcTotalPrice();
        },
        selectedProduct:function (item) {
            //alert("1");
            if(typeof item.checked=="undefined"){
                //Vue.set(item,"checked",true);//全局注册checked
                this.$set(item,"checked",true);//局部注册checked
            }
            else {
                item.checked=!item.checked;
            }
            this.calcTotalPrice();
        },
        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.totalCheckMoney=0;
            this.productList.forEach(function (item, index) {
                if(item.checked){
                    _this.totalCheckMoney+=item.productPrice*item.productQuentity;
                }
            })
        }
    }

});
Vue.filter("money",function (value,type) {
    return "¥"+value.toFixed(2)+type;
});

 

posted @ 2017-04-19 10:20  HongMaJu  阅读(8219)  评论(0编辑  收藏  举报