angleJSでドルメソッドと変数を使用する理由が、消化が行われているときにこれらの値をチェックしないようにangularJSに指示することであるかどうかを誰かが知っていますか?したがって、angularが出くわした場合$scope.$value
、$scope.value
変数名にドル文字が接頭辞として付いているため、前者のチェックを回避しますか?
8 に答える
これは、以下のスニペットhttp://docs.angularjs.org/tutorial/step_05からの単なる命名規則です。
'$'プレフィックス命名規則
独自のサービスを作成できます。実際、これはステップ11で行います。命名規則として、angularの組み込みサービス、Scopeメソッド、およびその他のいくつかのAngularAPIには'$'プレフィックスがあります。名前の前に。名前の衝突の可能性を回避するために、サービスとモデルに名前を付けるときに「$」プレフィックスを使用しないでください。
http://docs.angularjs.org/guide/concepts#angular_namespace
Angular名前空間
偶発的な名前の衝突を防ぐために、Angularは$と衝突する可能性のあるオブジェクトの名前にプレフィックスを付けます。誤ってAngularコードと衝突する可能性があるため、コードで$プレフィックスを使用しないでください。
Angularがドル記号の前に付いた変数を無視することが数回あります。
- 以下のSchumliのコメントでは、jsonフィルターはそれらを出力しません
ディレクティブを使用する場合
{{ }}
、angularはネストされた$
変数を表示しません。たとえば、これはvisible
プロパティのみを表示します。<div ng-init="n = { visible: 'foo', $ignore: 'bar' };">{{ n }}</div>
さらに、スコープオブジェクトに明示的なウォッチャーを追加する場合、このオブジェクトの先頭にドル記号が付いたプロパティを変更しても、ウォッチャーはトリガーされません。この更新されたフィドルを参照してください。
angular.equals()
プレフィックスが付いたキーは無視されます$
。
プレフィックスは、Angularの$
コアに属する変数、パラメーター、プロパティ、またはメソッドを示します。
フレームワーク内で発生するが、実際にはAPIの一部ではないオブジェクトのプロパティは、プライベートメソッドまたはプロパティ$
を$$
示すために始まる場合があります。これは、プレフィックスが他のライブラリでよく使用されるのと同じ方法です。_
フレームワーク自体が特別な意味を与える場合もありますが、ランタイムによるコードの解釈方法には影響しません。基本的には、「これを台無しにしないでください」という命名規則です。
完全にはわかりませんが、AngularJSの内部は、ダイジェスト中にこれらの$プレフィックス付き変数を操作することに依存していると思います。これらの変数をチェックすると、ダイジェストの各サイクル中に絶えず変化する可能性があるため、ダイジェストが安定しないことを意味します。
しかし、それについて私を引用しないでください。:)
ドル($)記号は、特定のディレクティブで要素が繰り返される(または解釈される)ことも防ぎます。したがって、たとえば、 $で始まるプロパティは、forループのif句のng-repeat
ためにでは使用されません。
if(collection.hasOwnProperty(key) && key.charAt(0) != '$')
誰かがAngularsgithubページでこのトピックについて問題を起こしました
メソッドでは、プロパティの反復中にif句があるため、 $$shallowCopy
で始まるプロパティはスキップされます。
if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {
私はいつも$
サービスの「S」のように見えると思っていました。
@MarcoSは、$scopeとscopeの違いを説明するhttps://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scopeへのリンクを提供しました。他の回答の情報に追加して、これが便利だと思いました。
角度ディレクティブには、リンクとコントローラーがあります。リンクは、スコープ、要素、属性オブジェクトなどの固定されたパラメーターのセットを持つ標準関数です。
コントローラーの引数はAngularインジェクターによって管理され、順序に依存しません。インジェクターは、$で始まるパラメーターを探すことにより、渡すオブジェクトを解決します。
https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scopeの作成者は、それをより適切に説明しています。
変数ではなく、コントローラーが受け取るパラメーターに大きな違いがあります。スコープパラメータは、$scopeパラメータとは完全に異なります。
詳細については、次の便利な投稿を確認してください:http ://www.thinkster.io/angularjs/aw9kWmdnik/angularjs-scope-vs-scope