2016-10-23 11 views
1

div内のフィールドのいずれかが変更された場合にのみ、保存ボタンを有効にします。私のdivには多くのテキストフィールド、選択とチェックボックスが含まれています。私は、div内のすべてのスコープ変数(ng-models)を調べ、変更時に保存ボタンを有効にする何か(おそらくディレクティブ)を探しています。divの角度の変更

textarea、text、およびselectフィールドだけがng-changeディレクティブを持つことができると私は理解しました。これを達成する他の方法はありますか?

まず、divのフィールドが変更されたときに自動的にトリガーする指示文を作成しました。しかし、この指令は決して引き起こされませんでした。私はこのディレクティブをHTMLのdivタグで説明しました。

.directive('enableSave', function() { 
     return { 
     require: 'ngModel', 
     restrict: 'A', 
     link: function(scope, elm, attr, ngModel) { 
      ngModel.$setViewValue(true); 
     } 
    } 
}); 
+0

の分野にすべてngModelsを結合しない理由最初にそのオブジェクトのバックアップコピーを作成し、オブジェクトの状態がバックアップコピーの状態と異なる場合(https://docs.angularjs.org/api/ng/function/angular.equalsを使用)、ボタンを有効にしますか? –

+0

あなたは何をしようとしているのいくつかの実例を投稿できますか? – Sreekanth

答えて

3

これには$scope.$watchを使用できます。変更がトリガされたときに、たとえば、ディレクティブに渡されているモデルに時計を入れて、保存ボタンを有効にします。

.directive('enableSave', function() { 
    return { 
    require: 'ngModel', 
    restrict: 'A', 
    link: function(scope, elm, attr, ngModel) { 
     scope.$watch('modeltowatch', function(newvalue,oldvalue){ 
      // Enable save button 
     }) 
    } 
    } 
}); 

さらに詳しい情報:https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$watch

0

ng-dirtyを使用して、フォームが変更されているかどうかを確認できます。 例が見つかりましたhere

関連する問題