angular2风格指南 - 有美元符号的财产?

时间:2016-06-07 06:07:49

标签: angular

查看angular2 code example,我们会看到一些带有$ sign的公共属性:

Error

任何人都可以解释:

  • 为什么使用$(这种表示法背后的原因是什么?总是将它用于公共属性)?
  • 使用公共属性但不使用方法(例如missionAnnouncements(),missionConfirmations()) - 再次,这是ng2应用程序的惯例吗?

似乎没有关于此in the official style guide的任何内容?

4 个答案:

答案 0 :(得分:182)

$ suffix (由Cycle.js推广)用于表示变量是Observable。 它也可以成为官方风格指南,但它还不存在

在此处阅读更多内容:What does the suffixed dollar sign $ mean?

<强>更新 在此处阅读更多关于Angular网站上的尾随“$”符号的信息: https://angular.io/guide/rx-library#naming-conventions-for-observables

答案 1 :(得分:12)

$命名范例源于Andre Saltz,并建议复数包含可观察量或流的所有变量名称。

getAll(): Observable<Zone[]>{
    let zone$ = this.http
      .get(`${this.baseUrl}/zones`, {headers: this.getHeaders()})
      .map(mapZone);
      return zone$;
  }

另一种方法是复制包含observable或stream的变量名,其中unicode字符与单词的最后一个字母相匹配。这解决了使用&#34; s&#34;来复制的单词的问题。

mouse$ vs mic€

这些命名约定都不在官方Angular样式指南中。使用一个或另一个(或没有)完全取决于个人偏好。

答案 2 :(得分:8)

<强> 更新 https://angular.io/guide/rx-library#naming-conventions-for-observables

  

因为Angular应用程序大多是用TypeScript编写的,所以通常会知道变量何时是可观察的。尽管Angular框架没有强制执行可观察对象的命名约定,但您经常会看到以带有“$”符号命名的observable。

     

在扫描代码并查找可观察值时,这非常有用。此外,如果您希望属性存储来自observable的最新值,则可以方便地使用带有或不带“$”的相同名称。

<强> 原始

在阅读官方英雄教程时,我看到变量以$结尾:

<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$的列表,不是英雄

<li *ngFor="let hero of heroes$ | async" >

$是一个约定,表示英雄$是一个Observable,而不是一个数组。

大多数情况是我们不在组件中订阅那些Observable变量。我们通常使用AsyncPipe自动订阅Observable变量

自Angular5.1于昨天(2017年12月6日)发布以来,我还没有在Style Guide中找到它。

答案 3 :(得分:7)

我还没有在样式指南中看到这个$,但我看到它经常被用于引用可以订阅的可观察对象的公共属性。