看一下angular2代码示例,我们看到一些带有$符号的公共属性:
<....>
private missionAnnouncedSource = new Subject<string>();
private missionConfirmedSource = new Subject<string>();
// Observable string streams
missionAnnounced$ = this.missionAnnouncedSource.asObservable();
missionConfirmed$ = this.missionConfirmedSource.asObservable();
<....>
谁能解释:
为什么使用$(此符号背后的原因是什么?始终将其用于公共财产)?
使用公共属性,但不使用方法(例如,missionAnnouncements(),missionConfirmations())-同样,这是ng2应用的约定吗?
官方样式指南中似乎没有关于此的任何内容?
$后缀(由Cycle.js填充)用于指示该变量是Observable。它也可以进入官方样式指南,但还不存在
在这里阅读更多 用$(美元符)作为变量的结尾,表示是一个观察者对象 observable ,表示是一个流 stream
https://angular.io/guide/rx-library#naming-conventions-for-observables
https://cycle.js.org/basic-examples.html#basic-examples-increment-a-counter-what-is-the-convention
更新: 在此处了解有关Angular网站上尾随“ $”符号的更多信息:https : //angular.io/guide/rx-library#naming-conventions-for-observables
- 3
- 11
- 27
- 1
- 4
$命名范例起源于安德烈·萨尔茨(Andre Saltz),并建议对包含可观察变量或流的所有变量名称进行复数处理。
getAll(): Observable<Zone[]>{
let zone$ = this.http
.get(`${this.baseUrl}/zones`, {headers: this.getHeaders()})
.map(mapZone);
return zone$;
}
另一种方法是使用与单词的最后一个字母匹配的unicode字符对包含可观察变量或流的变量名称进行复数化处理。这解决了没有用“ s”复数的单词的问题。
mouse$ vs mic€
官方Angular样式指南中都没有这两种命名约定。使用其中一个(或不使用)完全取决于个人喜好。
- 7
- 不错的参考!另请参阅本文。令我烦恼的是在我的代码库(其他同事)中尝试执行此操作并弄错了,将后缀放在错误的变量上,甚至更糟的是使用它来启动变量。我已经看到人们也没有一致性地使用它,在这种情况下,这完全没有意义。 medium.com/@benlesh/... - 埃里克Bishard 3月24日在'18 23:11
- 如果您要使用它,那么我将建议您遵循以下仓库中的命名约定:github.com/bodiddlie/rxheroes/blob/master/app/effects/hero.ts 并始终或永远不要这样做。为了可观察的上帝,要保持一致。 – 埃里克·比斯哈德 ( Eric Bishard)18年3月24日在23:14
- 1
更新: https : //angular.io/guide/rx-library#naming-conventions-for-observables
由于Angular应用程序大多是用TypeScript编写的,因此通常您会知道变量何时是可观察的。尽管Angular框架没有对可观察对象强制执行命名约定,但是您经常会看到可观察对象以尾随“ $”符号命名。
这在扫描代码并查找可观察的值时很有用。同样,如果您希望属性存储可观察到的最新值,则可以方便地使用带有或不带有“ $”的相同名称。
原件:
$
在阅读官方英雄教程时,我看到变量以结尾:
<div id="search-component">
<h4>Hero Search</h4>
<input #searchBox id="search-box" (keyup)="search(searchBox.value)" />
<ul class="search-result">
<li *ngFor="let hero of heroes$ | async" >
<a routerLink="/detail/{{hero.id}}">
{{hero.name}}
</a>
</li>
</ul>
</div>
仔细观察,您会发现* ngFor遍历了一个列表heroes$
,而不是 heros 。
<li *ngFor="let hero of heroes$ | async" >
$是一个约定,表示heroes $是可观察的,而不是数组。
大多数情况是我们不订阅那些组件中的Observable变量。我们通常使用AsyncPipe自动订阅Observable变量
自Angular5.1昨天(2017年12月6日)发布以来,我尚未在样式指南中找到它。