0

私は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){});

しかし、それもうまくいきません。

4

1 に答える 1