扩展 angularjs 表单控制器
extending angularjs form controller
我有多个子 ng-form,它们是父 ng-form 的一部分,当我将父 ng-form 设置为 $submitted 状态时,我想设置所有子表单的 $submitted 状态。
到目前为止,表单控制器上没有这样的方法,已检查here
假设,如果我想扩展当前的表单控制器来执行此操作,我应该怎么做?如何添加新方法 $setChildFormsToSubmittedState()
?当然我想在没有 disturbing/touching angular 代码的情况下做到这一点。
可能吗?我认为应该使用 $addControl();
将所有子窗体挂接到父窗体。
不知道从哪里开始。
您可以创建一个指令,将功能附加到表单控制器。只需创建一个迭代所有控件的方法,方法是检查某个项目是否具有等于它所属的表单对象的 $$parentForm
属性。
Javascript
.directive('myForm', function() {
return {
require: 'form',
link: function(scope, elem, attr, form) {
form.__setSubmitted = function() {
setSubmitted(form);
};
function setSubmitted(form) {
form.$submitted = true;
angular.forEach(form, function(item) {
if(item && item.$$parentForm === form) {
setSubmitted(item);
}
});
}
}
};
});
HTML
<form name="myForm" my-form ng-submit="myForm.__setSubmitted()">
<ng-form name="mySubForm1">
<input type="text" ng-model="data.something1" name="something">
{{mySubForm1.$submitted}}
</ng-form>
<br>
<ng-form name="mySubForm2">
<input type="text" ng-model="data.something2" name="something">
{{mySubForm2.$submitted}}
</ng-form>
<br>
<button type="submit">Button</button>
{{myForm.$submitted}}
</form>
我有多个子 ng-form,它们是父 ng-form 的一部分,当我将父 ng-form 设置为 $submitted 状态时,我想设置所有子表单的 $submitted 状态。
到目前为止,表单控制器上没有这样的方法,已检查here
假设,如果我想扩展当前的表单控制器来执行此操作,我应该怎么做?如何添加新方法 $setChildFormsToSubmittedState()
?当然我想在没有 disturbing/touching angular 代码的情况下做到这一点。
可能吗?我认为应该使用 $addControl();
将所有子窗体挂接到父窗体。
不知道从哪里开始。
您可以创建一个指令,将功能附加到表单控制器。只需创建一个迭代所有控件的方法,方法是检查某个项目是否具有等于它所属的表单对象的 $$parentForm
属性。
Javascript
.directive('myForm', function() {
return {
require: 'form',
link: function(scope, elem, attr, form) {
form.__setSubmitted = function() {
setSubmitted(form);
};
function setSubmitted(form) {
form.$submitted = true;
angular.forEach(form, function(item) {
if(item && item.$$parentForm === form) {
setSubmitted(item);
}
});
}
}
};
});
HTML
<form name="myForm" my-form ng-submit="myForm.__setSubmitted()">
<ng-form name="mySubForm1">
<input type="text" ng-model="data.something1" name="something">
{{mySubForm1.$submitted}}
</ng-form>
<br>
<ng-form name="mySubForm2">
<input type="text" ng-model="data.something2" name="something">
{{mySubForm2.$submitted}}
</ng-form>
<br>
<button type="submit">Button</button>
{{myForm.$submitted}}
</form>