无法将表单域设置为脏
Cannot set a form field to dirty
我一直在寻找这个问题的答案并遇到了几个帖子,但是 none 对我有用。
我想做一些简单的事情。我有一个按钮,在表单变脏之前是不可见的。如果我手动弄脏表单,这会很好用。但是,我正在保存数据。当加载表单时,保存的数据被填充,但是当后端数据以这种方式更新时,表单并不脏。
所以,我想我只是手动将表单设置为脏。但是我收到 "undefined" 个错误。
$scope.myForm = > undefined
$scope.$myForm => undefined
myForm = > returns the form object
myForm.myField = > returns the field
myForm.myField.$dirty => returns undefined
myForm.myField.$setDirty() = > returns "$setDirty is not a function"
this (inside my controller) = > returns and empty object
我正在使用 angular 1.6.6
我读了:
Angular.js programmatically setting a form field to dirty,
How to explicitly set a text box in a form to dirty?,
How to set a particular field in a form to dirty in angularjs 1.3
我的基本形态:
<div ng-controller="appCtrl">
<form name="myForm">
<input name="myField" ng-model="myField" />
<div ng-click="doSomething()" ng-show="myForm.myField.$dirty">Submit</div>
</form>
</div>
我添加了一个 plunker 来显示我遇到的问题。
https://plnkr.co/edit/ZUWywfOj329g6sviHIZf?p=preview
问题是在controller中的代码执行的那一刻dom还没有创建表单,所以解决方法是在初始化表单的时候调用你的数据初始化。
<form name="myForm" ng-init="formInit()">
控制器:
$scope.formInit = function() {
$timeout(function() {
$scope.myForm.$setDirty();
})
}
这会起作用。
现在我只想说,为什么用dirty来显示submit form?为什么不使用 required 和 myForm.$valid 进行验证?
为什么不直接使用:
<div ng-controller="appCtrl">
<form name="myForm">
<input name="myField" ng-model="myField" />
<div ng-click="doSomething()" ng-show="myField">Submit</div>
</form>
</div>
我一直在寻找这个问题的答案并遇到了几个帖子,但是 none 对我有用。
我想做一些简单的事情。我有一个按钮,在表单变脏之前是不可见的。如果我手动弄脏表单,这会很好用。但是,我正在保存数据。当加载表单时,保存的数据被填充,但是当后端数据以这种方式更新时,表单并不脏。
所以,我想我只是手动将表单设置为脏。但是我收到 "undefined" 个错误。
$scope.myForm = > undefined
$scope.$myForm => undefined
myForm = > returns the form object
myForm.myField = > returns the field
myForm.myField.$dirty => returns undefined
myForm.myField.$setDirty() = > returns "$setDirty is not a function"
this (inside my controller) = > returns and empty object
我正在使用 angular 1.6.6 我读了: Angular.js programmatically setting a form field to dirty,
How to explicitly set a text box in a form to dirty?,
How to set a particular field in a form to dirty in angularjs 1.3
我的基本形态:
<div ng-controller="appCtrl">
<form name="myForm">
<input name="myField" ng-model="myField" />
<div ng-click="doSomething()" ng-show="myForm.myField.$dirty">Submit</div>
</form>
</div>
我添加了一个 plunker 来显示我遇到的问题。 https://plnkr.co/edit/ZUWywfOj329g6sviHIZf?p=preview
问题是在controller中的代码执行的那一刻dom还没有创建表单,所以解决方法是在初始化表单的时候调用你的数据初始化。
<form name="myForm" ng-init="formInit()">
控制器:
$scope.formInit = function() {
$timeout(function() {
$scope.myForm.$setDirty();
})
}
这会起作用。
现在我只想说,为什么用dirty来显示submit form?为什么不使用 required 和 myForm.$valid 进行验证?
为什么不直接使用:
<div ng-controller="appCtrl">
<form name="myForm">
<input name="myField" ng-model="myField" />
<div ng-click="doSomething()" ng-show="myField">Submit</div>
</form>
</div>