首页 > 解决方案 > 如何使用 EVERY 定位所有将此属性设置为 FALSE 的项目

问题描述

我在项目中的 Select all 功能上使用了 EVERY 方法。

作为我的复选框上的 onChange 侦听器,我的函数运行此代码以查看每个对象上的 canWrite 的值是否设置为 true/false

checkSelected() {

  let testWrite = this.modalData.columnPermissions.every(function (item) 
    return item.canWrite;
  });

  this.isEveryWriteSelected = testWrite;

}

但是,模型的范围已更改为包含一个附加属性“IDM=true/false”- 无法选择 IDM 项目,因此目前此侦听代码现在永远不会触发 true。

我正在尝试将我的功能调整为现在仅检查 canWrite=true 如果项目包含 IDM=false

我可以通过忽略 item.IDM=false 在这种情况下使用 EVERY 吗?

已尝试添加 if 语句作为测试,但这并没有解决我的问题

let testWrite = this.modalData.columnPermissions.every(function (item) {
  if (!item.IDM) {
    return item.canWrite;
  }
});

我的 HTML - Angular 2 如下所示:

这是正在侦听 isEveryWriteSelected 的全选复选框

<div class="custom-control custom-checkbox">
  <input type="checkbox" class="custom-control-input" id="customCheck1c" [(ngModel)]="isEveryWriteSelected" name="isEveryWriteSelected" (change)="selectAll('Write', isEveryWriteSelected)" [disabled]="modalData.role != 1 || roleConfirm">
  <label class="custom-control-label" for="customCheck1c"><span>Select All</span></label>
</div>

虽然每个呈现的复选框都有一个调用上述函数的 on change 事件

<div class="custom-control custom-checkbox" *ngIf="!column.IDM">
  <input type="checkbox" class="custom-control-input" id="customCheck{{column.$id}}-write" name="customCheck{{column.$id}}-write" [(ngModel)]="column.canWrite" [checked]="column.canWrite" [disabled]="modalData.role != 1 || roleConfirm" (change)="checkSelected()">
  <label class="custom-control-label" for="customCheck{{column.$id}}-write"><span class="hideMe">&nbsp;</span></label>
 </div>

标签: javascripttypescript

解决方案


如果我理解正确,您需要检查所有具有canWrite trueIDM true

let testWrite = this.modalData.columnPermissions.every(function (item) {
    return item.canWrite || item.IDM;
});

推荐阅读