Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获得使形状变脏的场?_Javascript_Angularjs_Angularjs Directive_Angularjs Scope - Fatal编程技术网

Javascript 如何获得使形状变脏的场?

Javascript 如何获得使形状变脏的场?,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,有没有办法知道是哪一个字段使窗体在角度上变脏的?我有一个“自动保存”指令,它检查表单内部是否有任何更改,并相应地保存它(通过服务器请求),代码如下: app.directive 'nxAutoSave', ($timeout) -> return { scope: { nxError: '=' nxAutoSave: '&' } require: ["^form"] link: (scope, element, attrs, ctrls) -> dirtyEle

有没有办法知道是哪一个字段使窗体在角度上变脏的?我有一个“自动保存”指令,它检查表单内部是否有任何更改,并相应地保存它(通过服务器请求),代码如下:

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) ->
    #???
}

该指令监视NXRERROR(用作回调),以了解服务器是否发送了任何错误。在方法内部,我想显示一个带有错误消息的popover,但我需要知道是什么元素使表单变脏,以便激活我的popover


有人有什么建议吗?

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

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

希望这有助于……

谢谢!这是一个开始,但因为它是一个可以以任何形式使用的指令,所以我事先不知道字段的名称,所以我不能调用“scope.myForm.myField.$dirty”。。。
scope.myForm.myField.$dirty;