有没有办法知道哪个字段使表格在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 ...
有人有任何建议吗?
答案 0 :(得分:0)
表单中的每个命名输入也都是脏状态。如果在输入元素上放置了name属性,则表单中将显示这些属性以供您检查。因此,如果您将表单定义为:
<form name="myForm">
<input name="myField" type="text" ng-model="myModel" />
</form>
您将在范围内看到:
scope.myForm.myField.$dirty;
希望这会有所帮助......