javascript - 如果所有变量都为真,则返回真
问题描述
在我的 Angular 组件中,我有以下代码:
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-myApp',
templateUrl: './my-app.component.html',
styleUrls: ['./my-app.component.scss']
})
export class MyApp implements OnInit {
accordion1: boolean;
accordion2: boolean;
accordion3: boolean;
accordionAll: boolean;
constructor() { }
ngOnInit() {
}
toggleAll(): void {
this.accordionAll1 = !this.accordionAll
this.accordion1 = this.accordionAll;
this.accordion2 = this.accordionAll;
this.accordion3 = this.accordionAll;
}
}
所以有了这个我可以有单独的按钮,可以将状态切换为真或假,例如:
<div (click)="accordion1 = !accordion1" [ngClass]="accordion1 ? 'is-active' : ''"></div>
或者,如果我单击具有以下内容的按钮,我可以同时将它们全部设为真或假:
<div (click)="toggleAll()" [ngClass]="accordionAll ? 'is-active' : ''"></div>
这按预期工作。但是,如果起始状态accordionAll
为假,并且所有其他状态都单独单击为真状态,accordionAll
则将保持为假。但我想要的是,如果所有其他人单独为真或为假,它就会变为真。
解决方案
this.accordionAll
仅当accordion1
,accordion2
和accordion3
为真时才为真
和
this.accordionAll
仅当accordion1
或accordion2
或accordion3
为假时才会为假
在模板中:
<div (click)="accordion1 = !accordion1; shouldToggleAll()" [ngClass]="accordion1 ? 'is-active' : ''"></div>
<div (click)="accordion2 = !accordion2; shouldToggleAll()" [ngClass]="accordion2 ? 'is-active' : ''"></div>
<div (click)="accordion3 = !accordion3; shouldToggleAll()" [ngClass]="accordion3 ? 'is-active' : ''"></div>
在 ts 文件中
shouldToggleAll() {
this.accordionAll = this.accordion1 && this.accordion2 && this.accordion3;
}
推荐阅读
- mapbox - 添加地理编码器 - 我该怎么做?
- reactjs - 如何在反应路线中动态推送无限参数
- reactjs - Material Ui如何在表格单元格,列表中输出文本?
- python - 自定义气流运算符:是否可以覆盖 __new__ 方法?
- asp.net - 如何在控制器 ASP.NET 中返回大量对象
- vue.js - HTTP post 返回 400(错误请求)
- asp.net - 如何从 ASP.NET HttpHandler 中获取嵌入式资源 URL
- linux - 生成新下载文件的哈希
- c# - 将 MVC 视图呈现为 Parallel.ForEach 中的字符串时的依赖注入问题
- python - LSTM.weight_ih_l[k] 维度与 proj_size