如何得到的领域,使形式肮脏的角度

How to get field that made form dirty in angular?

本文关键字:何得      更新时间:2023-09-26

有什么方法可以知道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(用作回调),以了解服务器是否发送了任何错误。在方法内部,我想显示一个带有错误消息的popover,但我需要知道是什么元素使表单变脏,才能激活我的popover。。。

有人有什么建议吗?

表单中的每个命名输入也有一个脏状态。如果在输入元素上放置name属性,则表单上将提供这些元素供您检查。因此,如果你有一个定义为:的表格

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

你会,在范围内能够看到:

scope.myForm.myField.$dirty;

希望这能帮助。。。