gpt4 book ai didi

css - Angular - 查看需要很长时间才能显示更改和性能问题

转载 作者:行者123 更新时间:2023-11-27 23:38:39 25 4
gpt4 key购买 nike

我正在制作一个 Ionic Angular 应用。

我有一个显示微调器的页面,直到完成对 API REST 的调用以检索所需的数据。

我的问题是调用完成后,微调器如预期的那样消失了,但数据需要大约 2 秒才能显示在屏幕上。我正在使用变化检测,但即使我将其关闭,它仍然会执行相同的操作。此数据是一个数组。

我的代码如下

home.html

<ng-container *ngIf="loading else show">
<spinner [purple]="true" class="veritcal-center"></spinner>
</ng-container>

<ng-template #show>
<div>
<ng-template #mobile>
<ng-container *ngFor="let work of works">
<book-home-card-mobile [work]="work">
</book-home-card-mobile>
</ng-container>
</ng-template>
</div>
</ng-template>

home.ts

@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class HomePage {
public works: Array<Work>;
public loading: boolean;

constructor(
private worksService: WorksService,
private detector: ChangeDetectorRef
) {
this.works = [];
this.loading = true;
}

ngOnInit() {
this.getWorks();
}

ngAfterViewInit() {
this.detector.detach();
}

private getWorks(): void {
this.loading = true;
this.detector.detectChanges();

this.worksService.getWorks('newer', 0)
.subscribe((response: any) => {
response.forEach((work: Work) => this.works.push(work));
this.loading = false;
this.detector.detectChanges();
});
}
}

book-home-card-mobile.html

<div class="d-inline-block">
<ion-card [class.view]="overlay" [class.waves-effect]="waves" [class.overlay]="overlay" class="material-tooltip-main"
[class.xl-card]="main" [class.sm-card]="!main" data-toggle="tooltip" [title]="tooltip">
<div class="d-inline-block portrait" [class.waves-effect]="details" [style.cursor]="details ? 'pointer' : 'auto'">
<img [src]="work.image">
</div>

<div *ngIf="overlay" class="mask flex-center rgba-stylish-slight"></div>

<div class="d-inline-block details">

<div class="details-container">
<ion-card-header>
<ion-card-title style="white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;" [class.waves-effect]="details" [style.cursor]="details ? 'pointer' : 'auto'">
{{ work.title }}</ion-card-title>
</ion-card-header>

<div class="icons">
<div class="d-inline-block icon">
<ion-icon class="icon-card" name="eye"></ion-icon> <span class="amount">{{ visits }}</span>
</div>

<div class="d-inline-block icon">
<ion-icon name="chatbubbles"></ion-icon> <span class="amount">{{ commentsCount }}</span>
</div>

<div class="d-inline-block icon">
<ion-icon name="heart"></ion-icon> <span class="amount">{{ likes }}</span>
</div>

</div>

<ng-container *ngIf="ellipsis else noEllipsis2">
<div class="description" ellipsis [ellipsis-content]="work.description"></div>
</ng-container>

<ng-template #noEllipsis2>
<div class="description" [class.ellipsis-scroll]="!ellipsis" s>
{{ work.description }}
</div>
</ng-template>

<ion-card-header>
<div class="caret"><i class="fas fa-caret-right"></i></div>

<ion-card-subtitle style="white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;">{{ work.author_nickname }}</ion-card-subtitle>

</ion-card-header>

<div class="categories">
<ng-container *ngFor="let category of work.genres">
<ion-chip>
<ion-label color="secondary">{{ category.name}}</ion-label>
</ion-chip>
</ng-container>
</div>
</div>
</div>
</ion-card>
<br>
</div>

我的应用程序性能也很慢。在选项卡之间切换时查看选项卡的动画。

为了更好地理解,这里有一个视频:https://youtu.be/J_Vl7D10uWY

我觉得是我的书卡组件导致了性能问题,但我不知道为什么。会不会是因为我有太多 if 语句来应用不同的类或显示不同的东西?

谢谢!

最佳答案

好吧,正如我所怀疑的,问题出在我的组件和这个库的使用上,它正在检测我的 View 上的任何变化并重新计算省略号:

https://github.com/lentschi/ngx-ellipsis

关于css - Angular - 查看需要很长时间才能显示更改和性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57125949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com