其他分享
首页 > 其他分享> > 项目的购物车之全选和不全选

项目的购物车之全选和不全选

作者:互联网

数据的处理问题

  <input type="number"
                 :value="min"
                 @change="MIN"
                 step="0.01"
                 min="0.01"
                 placeholder="最低价"
                 class="mx">
  <text class="ddd"> — </text>
 <input type="number"
                 :value="max"
                 @change="MAX"
                 placeholder="最高价"
                 class="mx">

项目需要,数据处理的时候都是小数点后有两位小数,同时当用户输入0开头的时候,取消掉0

data(){
	return{
		min: null,
      max: null,
	}
}
methods:{
    MIN (e) {
          this.min = parseFloat(e.detail.value).toFixed(2)
        },
    MAX (e) {
      this.max = parseFloat(e.detail.value).toFixed(2)
    },
}

uniapp中的全选问题

子组件:

 <block v-for="(text,index) in item.orderItemDtos"
           :key="index">
      <view class="intro-content">
        <label v-if="states==3||states==4">
          <checkbox :data-index="index"
                    :data-scindex="index"
                    :value="toString(text.prodId)"
                    :checked="text.checked"
                    :data-proId="text.prodId"
                    @tap="onSelectedItem">
          </checkbox>
        </label>
        <view>具体的数据</view>
        </view>
  </block>
  props: ['states', 'item', "list"],
    methods: {
    // 单选状态
    onSelectedItem (e) {

      let check = this.item.orderItemDtos[0].checked
      this.item.orderItemDtos[0].checked = !check
      // 如果选中
      if (this.item.orderItemDtos[0].checked) {

        this.$emit('addList', { data: this.item.orderItemDtos[0] })
      } else {
      
        this.$emit('removeList', { data: this.item.orderItemDtos[0] })
      }
    },

父组件

 <checkbox-group class="block">
          <!-- 订单列表 -->
          <choose :states="states"
                  class="maininfo"
                  v-for="(v,index) in list"
                  :key="index"
                  :item="v"
                  :list="list"
                   @addList='addList'
                   @removeList='removeList'>
          </choose>
  </checkbox-group>
  
  <checkbox-group @change="allchoose">
              <label>
                <checkbox value="all"
                          :checked="allChecked">
                </checkbox>
              </label>
              <text>全选</text>
   </checkbox-group>
   
  date(){
  	return{
  		allChecked: false,//是否全选
      list: [],
      checklist: [],//选择数组
      prodIds: []//全选后的id值
  	}
  }
  
  methods:{
  		//全选按钮
    allchoose () {
      if (!this.allChecked) {
        this.checklist = []
        this.list.forEach(element => {

          console.log(element.orderItemDtos[0].checked)
          if (!element.orderItemDtos[0].checked) {
            element.orderItemDtos[0].checked = true
            this.checklist.push(element.orderItemDtos[0])
            this.allChecked = true
          } else {
            this.checklist.push(element.orderItemDtos[0])
          }
        });
      } else {
        this.checklist = [],
          this.list.forEach(element => {
            element.orderItemDtos[0].checked = false
            this.allChecked = false
          });
      }

      console.log(this.checklist)
    },
    // 添加选中项
    addList (data) {

      if (this.allChecked) {
        this.allChecked = false
      }
      this.checklist.push(data.data)
      if (this.list.length == this.checklist.length) {
        this.allChecked = true
      }
    },
    //移除选中项
    removeList (data1) {
      if (this.allChecked) {
        this.allChecked = false
      }
      let data = data1.data
      this.checklist.forEach((element, index) => {
        if (element.prodId == data.prodId) {
          this.checklist.splice(index, 1)
        }
        this.list.forEach((item, index) => {
          if (item.orderItemDtos[0].prodId == data.prodId) {
            this.list[index].orderItemDtos[0].checked = false
          }
        })
      });

      console.log(this.checklist)
    },
  }

标签:checked,项目,checklist,allChecked,element,全选,orderItemDtos,购物车,data
来源: https://blog.csdn.net/qq_45903009/article/details/119452842