1. 程式人生 > 其它 >angular-zorro nzShowCheckbox需要點選兩次才能選中 、 Indeterminate的含義

angular-zorro nzShowCheckbox需要點選兩次才能選中 、 Indeterminate的含義

技術標籤:js

一、nzShowCheckbox需要點選兩次才能選中

原因:

data.checked的真假值切換已經自動完成了,不應該再次切換

二、Indeterminate的含義

當indeterminate的值為真時,強制將選中狀態變為 - (隻影響介面顯示,不影響資料)

indeterminate何時為真?

除以下兩個狀態之外

(1)所有的單選框選中

(2)所有的單選框未選中

即:部分選中

附:

itemList是列表資料

  checkAll() {
    if(this.allChecked_table){
      this.itemList.forEach(i=>i.checked=true)
    }else{
      this.itemList.forEach(i=>i.checked=false)
    }
    this.ensure_state_indeterminate_table()
  }

  checkOne() {
    this.ensure_state_indeterminate_table()
    this.ensure_state_allChecked_table()
  }

  ensure_state_indeterminate_table(){
    let is_all_check = this.itemList.every(i=>i.checked==true)
    let is_all_not_check = this.itemList.every(i=> (i.checked==false || i.checked==undefined || i.checked==null))
    if(is_all_check || is_all_not_check){
      this.indeterminate_table = false
    }else{
      this.indeterminate_table = true
    }
  }

  ensure_state_allChecked_table(){
    let is_all_not_check = this.itemList.every(i=> (i.checked==false || i.checked==undefined || i.checked==null))
    if(is_all_not_check) {
      this.allChecked_table = false;
    }else{
      this.allChecked_table = true;
    }
  }