vue购物车php,关于vue的购物车checkbox全选和反选等功能实例分析

本文主要为大家分享一篇关于vue的购物车checkbox全选和反选等功能实例分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。

由于逻辑相对简单,直接附上代码咯!愿君多采撷~~~~

html代码:

id: {{selectedData}}

{{item.value}}价格:{{item.price}}

.Vue文件代码:

import { Checklist } from "vux";

export default {

name: "selectBuyer",

data() {

return {

fullValues: [],

checkboxData: [

{

id: "1",

value: "苹果4S",

price: 110

},

{

id: "2",

value: "苹果5C",

price: 250

},

{

id: "3",

value: "苹果6P",

price: 340

}

],

selectedData: [],

totalPrice: 0.00,

isAllChecked: true,

checkBox: {

checked: false,

items: {}

}

};

},

mounted() {

this.checkboxData.forEach((item, index) => {

this.selectedData.push(item.id);

this.$set(this.checkBox.items, index, !this.checkBox.checked);

});

},

computed: {

totalPurchasers() {

return this.selectedData.length;

},

calculatedTotal() {

this.totalPrice = 0.00;

this.selectedData.map((item1, index) => {

let curItem1 = item1;

this.checkboxData.map((item2, index) => {

if(this.checkboxData[index].id == curItem1){

this.totalPrice += this.checkboxData[index].price;

}

});

});

return this.totalPrice;

}

},

methods: {

//全选点击事件

checkedAll() {

let trueNum = 0;

let checkBoxNum = 0;

Object.keys(this.checkBox.items).forEach(key => {

checkBoxNum++;

if (this.checkBox.items[key] === true) {

trueNum++;

}

});

if (trueNum != 0) {

if (

trueNum != this.checkboxData.length ||

checkBoxNum < this.checkboxData.length

) {

this.checkboxDataMap(!this.checkBox.checked);

} else {

this.checkboxDataMap(this.checkBox.checked);

}

} else {

this.checkboxDataMap(!this.checkBox.checked);

}

},

//遍历改变checkbox状态

checkboxDataMap(checked) {

let checkboxDataId = [];

this.checkboxData.forEach((item, index) => {

this.checkBox.items[index] = checked;

checkboxDataId.push(item.id);

});

if (checked == true) {

this.selectedData = this.arrayMerging(

this.selectedData,

checkboxDataId

);

} else {

this.selectedData.splice(0, this.selectedData.length);

}

},

//input输入框change事件

handleInputChange(e) {

setTimeout(() => {

if (this.selectedData.indexOf(e.target.value) > -1) {

this.remove(this.selectedData, e.target.value);

} else {

this.selectedData.push(e.target.value);

}

if (this.selectedData.length < this.checkboxData.length) {

this.isAllChecked = false;

} else {

this.isAllChecked = true;

}

}, 0);

},

//数组删除

remove(arr, val) {

var index = arr.indexOf(val);

if (index > -1) {

arr.splice(index, 1);

}

},

//数组合并去重

arrayMerging(arr1, arr2) {

var arr = arr1.concat();

for (var i = 0; i < arr2.length; i++) {

if (arr.indexOf(arr2[i]) === -1) {

arr.push(arr2[i]);

}

}

return arr;

}

},

components: {

Checklist

},

metaInfo() {

return {

title: "选择购卡学生"

};

}

};

less样式文件:@import (reference) "../../style/common.less";

.select-buyer {

.weui-cells_checkbox {

margin-top: -25px !important;

font-size: 28px;

.weui-cell {

padding: 40px 30px !important;

.vux-label-desc {

font-size: inherit;

}

}

& .weui-icon-checked:before {

font-size: 48px;

}

& .weui-check:checked+.vux-checklist-icon-checked:before {

color: @g-main-green;

}

}

.footer .weui-cells_checkbox .weui-check:checked+.weui-icon-checked:before {

content: '\EA01';

}

.footer .weui-cells_checkbox .weui-check:checked+.vux-checklist-icon-checked:before {

color: #C9C9C9;

}

}

.pay-area {

position: fixed;

height: 94px;

background-color: @g-white;

display: flex;

width: 100%;

left: 0;

bottom: 0;

.pay-btn {

width: 220px;

text-align: center;

font-size: 36px;

/* px */

line-height: 94px;

color: @g-white;

background-color: @g-main-green;

.loading-img {

width: 40px;

vertical-align: -3px;

margin: 0 3px;

}

}

.pay-text {

font-size: 28px;

color: @g-font-default-color;

line-height: 54px;

/* px */

display: inline-block;

vertical-align: top;

margin-right: 10px;

}

.pay-money {

font-size: 48px;

/* px */

line-height: 54px;

/* px */

color: @g-font-dark-color;

}

.price-area {

flex: 1;

padding: 20px 30px;

}

}

.error {

padding-left: 15px;

line-height: 28px;

color: #888;

font-size: 12px;

}

相关推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值