2017-04-20 23 views
0

Angular 1.xを使用してフォームの変更を監視しようとしています。私は、データを保存する前にユーザーがページから離れた場合に警告を表示できるように、これを実行しています。私はフォームのために$を見ることができます$ $はちゃんと有効ですが、フォームは有効です。だから、明確にすること、これは動作します:

$scope.$watch('forms.editForm.$valid', function (newVal, oldVal) { 
    // This is how we tell if there are unsaved form changes so we don't navigate away 
    $scope.unsavedFormChanges = oldVal; 
}, true); 

そして、これはしません:

$scope.$watch('forms.editForm.$dirty', function (newVal, oldVal) { 
    // This is how we tell if there are unsaved form changes so we don't navigate away 
    $scope.unsavedFormChanges = oldVal; 
}, true); 

誰もが、私は$汚い$を見ることができない理由は、そこにある場合にように私を啓発してくださいできそうするためのバックアップ計画ですか? - ありがとう

答えて

1

私の頭を壁にぶつけた後、私はこれを考え出したと思う。 $ validはオブジェクトであり、$ dirtyは値であるようです。その3番目のパラメータが入ります。$ watchステートメントの最後にある "true"は、$ watchにそれが何を見ているかを伝えます。真はそれがオブジェクトであることを意味し、偽はそれが値であることを意味する。言われていること、これは動作します:それは私たちが取得しているすべてですので、

$scope.$watch('forms.editForm.$dirty', function (value) { 
    // This is how we tell if there are unsaved form changes so we don't navigate away 
    $scope.unsavedFormChanges = value; 
    $log.info('Form Dirty Changed: ' + value); 
}, false); 

は、私はまた、OLDVAL /たnewvalに値だけを変更しました。

関連する問題