uniapp js 根据复选框 取值

  • 对列表的数据加标记
  • 选中为true 非true为没有选中
  • 每勾选一次 循环计算一次 总数就是选中数
  • 选中存 <序号、是否选中>对象
  • 数组去掉选中 循环数组 找到对应的 进行移除
<view class="top">
		<view v-for="(item,index) in invoiceList" :key="item.index"  @click="selectItem(index)">
			<view class="inovice">
				<view class="box1">
					<checkbox :checked="item.isChecked"></checkbox>
				</view>
				<view class="box3">
					{{item.price}}元
				</view>
			</view>
			<view class="bot"></view>
		</view>
		<!--底部选项-->
		<view class="bot_tar">
			<checkbox @click="selectAll" :checked="isSelectAll">全选</checkbox>
			<text>{{selectCount}}个行程,共{{allPrice}}元</text>
		</view>
	</view>
<script>
	export default {
		data() {
			return {
				selectCount:0,
				invoiceList: [{
						price: 28.72,
						isChecked:false
					},
					{
						price: 18,
						isChecked:false
					},
					{
						price: 28,
						isChecked:false
					},
					{
						price: 40,
						isChecked:false
					}
				],
				isSelectAll: false,
				allPrice: 0
			}
		},
		methods: {
			selectAll() {
				this.isSelectAll = !this.isSelectAll;//取反
				for(var i=0;i<this.invoiceList.length;i++){//循环
					var invoice = this.invoiceList[i];//变量 invoice == 数组每一项
					invoice.isChecked = this.isSelectAll;//  赋值
				}
				this.calcCount();//调用函数
			},
			selectItem(index) {
 				var invoice =  this.invoiceList[index];//变量 invoice == 数组每一项索引
				if(invoice){
					invoice.isChecked = !invoice.isChecked   //取反
				} 
				 this.calcCount();//调用函数
			
			},
			calcCount(){
				this.selectCount = 0;
				this.allPrice = 0 ;
				for(var i=0;i<this.invoiceList.length;i++){ 
					var invoice = this.invoiceList[i];
					var allPrice = this.invoiceList[i].price;
					if(invoice.isChecked){   //判断是否为true,if条件判断,为真时执行,默认·是false “复选框 属性选中时为true”
						this.selectCount++;//递增
						this.allPrice += this.invoiceList[i].price//累加
					}
				}
			}
		},
		onLoad() {
            
        }
	}
</script>
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐