2016-10-23 51 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