[解決済み] ngModel フォーマッタとパーサ
質問
同じ質問を別の形で投稿したのですが、誰も答えてくれません。angular jsでFormattersとParserが何をするのか、明確なイメージを得られていません。
定義によると、フォーマッタとパーサはどちらも私には似ているように見えます。 私はこのangularjsに新しいので、多分私は間違っています。
フォーマッタの定義
モデルの値が変更されるたびに、パイプラインとして実行される関数の配列。 各関数は順番に呼び出され、次の関数に値を渡します。 コントロールとバリデーションで表示するために、値をフォーマット/変換するために使用されます。
パーサーの定義
コントロールが DOM から値を読み取るたびに、パイプラインとして実行される関数の配列です。 各関数は、順番に呼び出され、次の関数に値を渡します。 バリデーションと同様に、値をサニタイズ/変換するために使用されます。 検証のために、パーサーは $setValidity() を使用して有効性の状態を更新し、無効な値に対しては undefined を返す必要があります。
簡単な例で両方の機能を理解するのを助けてください。両方の簡単な図解があるとありがたいです。
どのように解決するのですか?
このトピックは、関連する質問で非常によくカバーされています。 どのようにAngularJSで双方向フィルタリングを行うには?
まとめると
- フォーマッタは、モデルの値がビューに表示される方法を変更します。
- パーサはビューの値がどのようにモデルに保存されるかを変更します。
の例を基にした、簡単な例です。 NgModelController api ドキュメント :
//format text going to user (model to view)
ngModel.$formatters.push(function(value) {
return value.toUpperCase();
});
//format text from the user (view to model)
ngModel.$parsers.push(function(value) {
return value.toLowerCase();
});
実際の動作を見ることができます。 http://plnkr.co/UQ5q5FxyBzIeEjRYYVGX?plnkr=legacy
<input type="button" value="set to 'misko'" ng-click="data.name='misko'"/>
<input type="button" value="set to 'MISKO'" ng-click="data.name='MISKO'"/>
<input changecase ng-model="data.name" />
名前を入力するとき(viewからmodel)、modelは常に小文字であることがわかります。 しかし、ボタンをクリックしてプログラム的に名前を変更した場合(モデルからビュー)、入力フィールドは常に大文字になります。
関連
-
[解決済み】Angularjsのng-viewが動作しない。
-
[解決済み】angularのonLoadとng-initの違いについて
-
[解決済み] シンプルなangularjsの日付入力
-
[解決済み] ディレクティブ '...' が要求するコントローラ 'ngModel' が見つかりません。
-
angularjs統合ueditor入門
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
-
[解決済み] ng-modelとng-bindの違いは何ですか?
-
[解決済み] AngularJSのサービスをコンソールからテストするにはどうしたらいいですか?
-
[解決済み] Angularのエラーです。"Can't bind to 'ngModel' because it isn't a known property of 'input'"."
-
[解決済み】AngularJSのディレクティブスコープにおける「@」と「=」の違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Angularjsのng-viewが動作しない。
-
[解決済み] angularのpostリクエストでpreflightのレスポンスがHTTPステータスコード403で不正になる。
-
[解決済み] 適用がすでに進行中のエラー
-
[解決済み] Angular ng-repeatの条件付きラップアイテム(ng-repeatのグループアイテム)。
-
[解決済み] md-selectでデフォルト値を設定する方法
-
[解決済み] angularjsで$compileを操作する
-
処理されない例外が発生しました。Angular 実行中のプロジェクトで NGCC に失敗しました。
-
角型グローバル確認ボックス
-
[解決済み] AngularJSでEnterキーを押したときにフォームを送信する
-
[解決済み] AngularJSで双方向のフィルタリングを行うには?