Angular 2 *ngIf 与 *ngFor 中的 elvis 运算符
Angular 2 *ngIf vs elvis operator in *ngFor
<ul class="row collapse no-bullet" *ngIf="items">
<li class="columns" [ngClass]="columnSize" *ngFor="#item of items">
<a href="...">
<img class="orbit-image" [src]="getImageSrc(item.image.thumb250)">
<figcaption class="orbit-caption">{{item.location.city}}{{item.handle}}</figcaption>
</a>
</li>
</ul>
VS
<ul class="row collapse no-bullet">
<li class="columns" [ngClass]="columnSize" *ngFor="#item of items">
<a href="...">
<img class="orbit-image" [src]="getImageSrc(item?.image?.thumb250)" [alt]="item?.caption">
<figcaption class="orbit-caption">{{item?.location?.city}} {{item?.handle}}</figcaption>
</a>
</li>
</ul>
用什么比较好? ngIf 在数据准备好后不呈现项目或使用 Elvis 运算符来避免未定义的值。
这取决于,ngIf 运算符 cut 来自 DOM 的元素阻止任何交互。 elvis 运算符保留 DOM 元素,但在访问 属性,基本上它 returns undefined 如果不存在。如果你想在元素出现时立即显示,请使用 elvis,如果你想在元素完全准备好时显示,请使用 *ngIf。我个人更喜欢在准备好后立即显示元素,因为它显示 响应能力。
<ul class="row collapse no-bullet" *ngIf="items">
<li class="columns" [ngClass]="columnSize" *ngFor="#item of items">
<a href="...">
<img class="orbit-image" [src]="getImageSrc(item.image.thumb250)">
<figcaption class="orbit-caption">{{item.location.city}}{{item.handle}}</figcaption>
</a>
</li>
</ul>
VS
<ul class="row collapse no-bullet">
<li class="columns" [ngClass]="columnSize" *ngFor="#item of items">
<a href="...">
<img class="orbit-image" [src]="getImageSrc(item?.image?.thumb250)" [alt]="item?.caption">
<figcaption class="orbit-caption">{{item?.location?.city}} {{item?.handle}}</figcaption>
</a>
</li>
</ul>
用什么比较好? ngIf 在数据准备好后不呈现项目或使用 Elvis 运算符来避免未定义的值。
这取决于,ngIf 运算符 cut 来自 DOM 的元素阻止任何交互。 elvis 运算符保留 DOM 元素,但在访问 属性,基本上它 returns undefined 如果不存在。如果你想在元素出现时立即显示,请使用 elvis,如果你想在元素完全准备好时显示,请使用 *ngIf。我个人更喜欢在准备好后立即显示元素,因为它显示 响应能力。