vue使用方法计算总金额

时间:2023-03-09 06:21:13
vue使用方法计算总金额

1、预览

vue使用方法计算总金额

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