Vue
by 朱 茱霞
HTML
<div class="container" id="app">
<table class="table" v-if="dataList.length">
<thead>
<tr>
<th>产品编号</th>
<th>产品名称</th>
<th>购买数量</th>
<th>产品单价</th>
<th>产品总价</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="item in dataList" :key='item.id'>
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>
<input @click="update(item,'sub')" type="button" value="-" class="btn btn-danger">
<!-- 不使用$watch -->
<input type="text" size="4" :value="item.quanity" @input="inputFn(item,$event)">
<input @click="update(item,'add')" type="button" value="+" class="btn btn-danger">
</td>
<td>¥{{ item.price }}</td>
<td>¥{{ item.price * item.quanity }}</td>
<td>
<input type="button" value="移除" class="btn btn-danger" @click="update(item,'del')">
</td>
</tr>
</tbody>
<tfoot>
<tr>
<td></td>
<td></td>
<td>总数:{{ getQty }}</td>
<td></td>
<td>总价格:¥{{ getTotalPirce }}</td>
<td>
<input type="button" value="清空购物车" class="btn btn-danger" @click="update('','delAll')">
</td>
</tr>
</tfoot>
</table>
<div v-if="!dataList.length">
请选购您所需的商品
</div>
</div>
Vue
var app = new Vue({
el:'#app',
data:{
dataList:[
{
id:1001,
name:'iphone5',
quanity:4,
price:4999
},
{
id:1002,
name:'iphone5s',
quanity:6,
price:5999
},
{
id:1003,
name:'iphone6',
quanity:3,
price:4999
},
{
id:1004,
name:'iphone6s',
quanity:7,
price:7999
},
]
},
computed:{
getQty(){
var total = 0
this.dataList.forEach(element => {
total+= parseInt( element.quanity )
});
return total;
},
getTotalPirce(){
var totalPriece = 0
this.dataList.forEach(element => {
totalPriece += parseInt( element.quanity ) * parseInt( element.price )
});
return totalPriece;
}
},
methods:{
update(item,todo){
let datalistCopy = JSON.parse(JSON.stringify(this.dataList))
let itemCopy = JSON.parse(JSON.stringify(item))
if( todo == 'add' ){
if(itemCopy.quanity >= 10 ){
alert('只能在1到10')
return;
}
itemCopy.quanity++
} else if( todo == 'sub'){
if( itemCopy.quanity > 1 ){
itemCopy.quanity--
} else {
if( confirm('是否删除此物品')){
datalistCopy.splice(this.dataList.indexOf(item),1)
}
}
} else if( todo == 'del'){
if( confirm('是否删除此物品?')){
datalistCopy.splice(this.dataList.indexOf(item),1)
}
} else if(...