1

有沒有什麼方法可以知道在Angular中哪個字段使得表格變髒?我有一個「自動保存」指令,它檢查是否有形式內的任何變化,並且相應地將其保存(波谷服務器請求)時,代碼如下:如何獲得使角度變髒的字段?

app.directive 'nxAutoSave', ($timeout) -> 
return { 
scope: { 
    nxError: '=' 
    nxAutoSave: '&' 
} 
require: ["^form"] 
link: (scope, element, attrs, ctrls) -> 
    dirtyElement = null 
    $formCtrl = ctrls[0] 
    savePromise = null 

    scope.$watch -> 
    if $formCtrl.$valid and $formCtrl.$dirty 
     $timeout.cancel savePromise if savePromise 
     savePromise = $timeout(-> 
     savePromise = null 
     # Still valid? 
     if $formCtrl.$valid 
      scope.nxAutoSave() 
      $formCtrl.$setPristine() 
     return 
     , 1100) 
    return 

    scope.$watch 'nxError', (newVal, oldVal) -> 
    #??? 

}

該指令手錶nxError(用作回調函數)來知道服務器是否發生了錯誤。在該方法中,我想顯示一個彈出窗口的錯誤消息,但我需要知道什麼元素使窗體變髒以激活我的彈出窗口...

有沒有人有任何建議?

回答

0

表單中的每個命名輸入也有髒狀態。如果您在輸入元素上添加了名稱屬性,則它們將在表單上供您檢查。所以,如果你有一個表單定義爲:

<form name="myForm"> 
    <input name="myField" type="text" ng-model="myModel" /> 
</form> 

你,在範圍能夠看到:

scope.myForm.myField.$dirty; 

希望這有助於...

+0

謝謝!這是一個開始,但由於它是一種以任何形式使用的指令,所以我不會事先知道這些字段的名稱,所以我無法調用「scope.myForm.myField。$ dirty」... – Rainer 2014-10-07 13:51:56