如何获得使角度变脏的字段?

问题描述:

有没有什么方法可以知道在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(用作回调函数)来知道服务器是否发生了错误。在该方法中,我想显示一个弹出窗口的错误消息,但我需要知道什么元素使窗体变脏以激活我的弹出窗口...

有没有人有任何建议?

表单中的每个命名输入也有脏状态。如果您在输入元素上添加了名称属性,则它们将在表单上供您检查。所以,如果你有一个表单定义为:

<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