angular - Angular 是个好习惯吗
问题描述
我正在制作一个中等规模的应用程序,我想知道我的数据绑定实践。我以这种方式将数据直接从服务传递到模板:
<ion-list class="list-preview ion-padding padding-top-0" lines="none" *ngIf="caseService.activeCase.value.values">
<ion-item *ngFor="let caseItem of caseService.activeCase.value.getValues()">
<div>
<ion-note class="ion-float-left">{{ caseItem.label }}</ion-note>
<ion-text class="ion-float-left">{{ caseItem.value }}</ion-text>
</div>
</ion-item>
</ion-list>
一些教程/应用程序有不同的方法来制作它。通常通过订阅组件中的服务,然后将结果分配给组件变量,这种方式是:
cases = [];
constructor(
public caseService: CasesService) {
}
ngOnInit(): void {
this.caseService.getStructure().subscribe(cases => this.cases = cases);
}
你怎么看?一些道具,缺点?
解决方案
推荐代表订阅并将值返回给局部变量的原因是,如果您将函数调用添加到 HTML 模板,角度必须以这种方式检查函数的返回值,从而对函数本身进行多次调用。由于 Angular 检查函数的返回值,因此触发了整个更改检测生命周期。如果不在模板中使用函数调用而只使用变量 Angular 不必调用任何函数,则只会触发属性检查。这种方式使应用程序更快,内存效率更高。
推荐阅读
- database - 如何从另一个没有关系laravel 8的表中检索具有多行的行数据
- azure-web-app-service - 天蓝色网站中 UseWindowsAzureActiveDirectoryBearerAuthentication 的调试或错误日志?
- python - 如何动态使用 Pandas 日期时间对象?
- aws-lambda - 使用 Terraform 将 Lambda@edge 函数附加到现有的 Amazon Cloudfront 发行版
- css - 菜单中的下拉箭头在 wordpress 上消失了现在该怎么办?
- javascript - 我需要根据 if 条件更改事件的颜色
- javascript - “在Angular首次显示数据绑定属性之后”是什么意思
- c++ - 为什么我在同一个线程中使用 pthread_mutex_lock 两次时没有发生核心转储?
- html - 页面链接不能完美导航
- amazon-web-services - 如何让 ECS 实例专属于特定的服务任务?