【发布时间】:2018-08-27 19:45:15
【问题描述】:
您好,我正在用 Angular 开发 Web 应用程序。我正在显示具有三种状态的复选框。我正在使用 CSS 类来区分状态。三个状态是交叉标记,检查标记和空白。下面是实现部分。
<div *ngIf="node.data.checked==true && node.data.allow==true">
<label class="container">
<input (change)="check(node, !node.data.checked)" type="checkbox" [indeterminate]="node.data.indeterminate" [checked]="node.data.checked">
<span class="checkmark"></span>
{{ node.data.name }}
</label>
</div>
<div *ngIf="node.data.checked==true && node.data.allow==false">
<label class="container">
<input (change)="check(node, !node.data.checked)" type="checkbox" [indeterminate]="node.data.indeterminate" [checked]="node.data.checked">
<span class="checkmark xmark"></span>
{{ node.data.name }}
</label>
</div>
<div *ngIf="node.data.checked==false">
<label class="container">
<input (change)="check(node, !node.data.checked)" type="checkbox" [indeterminate]="node.data.indeterminate">
<span class="checkmark"></span>
{{ node.data.name }}
</label>
</div>
设备型号1 包含交叉标记,设备型号2 包含复选标记,设备型号4 包含空白。这是三种状态。现在,当用户单击任何一个复选框时,该复选框的状态应在以下路径中发生变化。
blank --> checked --> cross --> blank
上面是圆形路径。例如,如果复选框被选中,那么当用户单击它时,复选框应该变为交叉,如果用户再次单击它,则为空白,如果用户再次单击它,则再次选中,依此类推。显示我已经完成的部分。有人可以像我上面所说的那样帮助我完成这项工作吗?任何帮助,将不胜感激。谢谢。
【问题讨论】:
-
查看css-tricks.com/almanac/selectors/i/indeterminate 了解有关不确定状态的基本指南
-
感谢您的帮助。在 javascript 中,我们使用切换(this)发送复选框。我怎样才能在角度做到这一点?
-
当您需要“循环”路径时,使用“余数”运算符:cb.checked=(cb.checked+1)%3 为您提供 0,1,2,0,1, 2,0,1,2...