[解決済み] parse、$interpolate、$compileの各サービスの違いは何ですか?
2022-05-03 17:51:18
質問
とはどのような違いがあるのでしょうか?
$parse
,
$interpolate
と
$compile
サービスですか?
私にとっては、それらはすべて同じことをします:テンプレートを取り、それをtemplate-functionにコンパイルします。
どのように解決するのですか?
これらはすべてAngularJSのビューレンダリングを補助するサービスの例です(ただし
$parse
と
$interpolate
は、このドメイン以外でも使用できます)。それぞれのサービスがどのような役割を担っているかを説明するために、次のようなHTMLを例にとって見てみましょう。
var imgHtml = '<img ng-src="/path/{{name}}.{{extension}}">'
とスコープ上の値を指定します。
$scope.name = 'image';
$scope.extension = 'jpg';
このマークアップをもとに、各サービスが何をもたらすかを説明します。
-
$compile
- は、マークアップ全体を取り込んでリンク関数にすることができ、特定のスコープに対して実行されると、HTMLテキストの一部をすべてのディレクティブを含む動的でライブなDOMに変換します(ここではng-src
) モデルの変更に反応する。次のように呼び出します。compile(imgHtml)($scope) とすると、結果としてすべてのDOMイベント境界を持つDOM要素が得られます。$compile
を利用しています。$interpolate
(中略)自分の仕事をするために。 -
$interpolate
補間式が埋め込まれた文字列を処理する方法を知っている、例./path/{{name}}.{{extension}}
. つまり、補間式を含む文字列とスコープを受け取り、それを結果のテキストに変換することができる。例えば$interpolation
サービスは、非常にシンプルな、文字列ベースのテンプレート言語である。上の例では、このサービスを次のように使う。$interpolate("/path/{{name}}.{{extension}}")($scope)
を取得するためにpath/image.jpg
の文字列を結果とする。 -
$parse
が使用されます。$interpolate
を使用して、個々の式を評価することができます (name
,extension
) をスコープに対して設定します。これは 読む と セット の値を指定します。例えばname
という表現があります。$parse('name')($scope)
を使用して、"image" の値を取得します。値を設定するには、次のようにします。$parse('name').assign($scope, 'image2')
これらのサービスはすべて、AngularJSでライブUIを提供するために連携しているのです。しかし、それらは異なるレベルで動作しています。
-
$parse
は個々の表現にのみ関係します (name
,extension
). 読み書き可能なサービスです。 -
$interpolate
は読み取り専用で、複数の式を含む文字列に関するものです (/path/{{name}}.{{extension}}
) -
$compile
はAngularJSの機械の中心であり、(ディレクティブと補間式を使って)HTML文字列をライブDOMに変換することができます。
関連
-
JavaScriptのクロージャの説明
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] angular.serviceとangular.factoryの比較
-
[解決済み] substrとsubstringの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
Vueのフィルタの説明
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み] 配列の結合時に未定義のプロパティ 'push' を読み込むことができない
-
[解決済み】JavaScriptの配列でforEachが関数でない不具合
-
[解決済み] TypeError: $.ajax(...) is not a function?
-
[解決済み】 Uncaught TypeError : undefined のプロパティ 'replace' を読み取れない In Grid