[解決済み] AngularJS : モデルの変更を自動的に検出する。
2022-12-08 12:15:31
質問
モデルの値が変わるたびに、自動的に何らかのコード(サーバーへのデータ保存など)を実行するようなことをしたいと思います。これを行うには、以下のような設定を行うしかないのでしょうか?
ng-change
のようなものを、モデルを変更する可能性のある各コントロール上に設定することによって、これを行う唯一の方法はありますか?
つまり、ビューでは、明示的に何かをフックすることなく、モデルが変更されると同時に、物事が変更されます。サーバーに保存するコードを実行できるような類似点がありますか?次のようなものです。
myModel.on('change', function() {
$.post("/my-url", ...);
});
バックボーンのようなもので見ることができます。
どのように解決するのですか?
ビューで
{{}}
とか ng-model があるビューでは、Angular は
$watch()
を設定します。
デフォルトでは
$watch
は参照によって比較されます。 もし第3パラメータに
$watch
から
true
に変更する場合、Angularはその代わりにオブジェクトの変更を浅く監視します。 配列の場合、これは配列の項目を比較することを意味し、オブジェクトマップの場合、これはプロパティを監視することを意味します。 つまり、これはあなたが望むことをするはずです。
$scope.$watch('myModel', function() { ... }, true);
更新 : Angular v1.2より、新しいメソッドが追加されました。 `$watchCollection() :
$scope.$watchCollection('myModel', function() { ... });
例えば、ウォッチされているオブジェクトが他のオブジェクトへの参照であるプロパティ値を含んでいる場合、他のオブジェクトを比較するためにその参照は追跡されないため、 "deep" ではなく "shallow" という言葉が比較を説明するために使われていることに注意してください。
関連
-
[解決済み] 要素外でのクリックを検出するにはどうすればよいですか?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] モバイル端末の検出にはどのような方法がありますか?
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
-
[解決済み] AngularJS コントローラにおける 'this' と $scope の比較
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] モバイルWeb HTML5フレームワークの選び方【終了しました
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] Javascript / jQueryでAndroid端末を検出する。
-
[解決済み] jQueryの$という記号の意味は何ですか?
-
[解決済み] コールバック地獄とは何か、RXはそれをどのように、そしてなぜ解決するのか?
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]