私はAngularを使用しており、フォームが操作するオブジェクトが変更された場合にのみフォームにボタンを表示しようとしています。
html:
<input ng-model="form.field1" />
<input ng-model="form.field2" />
<div ng-show="formChanged">Show button</div>
コントローラ:
$scope.form = {
field1: 'hello'
}
$scope.$watch('form', function(){
$scope.formChanged = true;
});
オブジェクトの一部が変更されるたびに $watch が起動するという印象を受けました。ただし、 $watch は最初に呼び出され、オブジェクトが変更された後に一度だけ呼び出されるようです。
ここにプランカーがあります: http://plnkr.co/edit/Hv8oLLviOzSLMUg2iBXt
括弧内の情報: $watch を各プロパティを明示的に参照するように設定すると、$watch が期待どおりに機能することがわかりましたが、最初は実行されます。
最初に呼び出されないようにするために、次のように newValue 変数と oldValue 変数を使用しようとしました。
$scope.$watch('form', function(newVal, oldVal){});
しかし、それもうまくいきません。