AngularJS:断开表单与其父表单之间的连接

时间:2018-12-17 22:38:02

标签: javascript angularjs

我正在编写一个拥有表单的应用程序,我必须发布表单的内容。为此,我编写了以下简短函数:

$scope.record = function (data_form, validation_control, validate) {
    var data = {};
    data_form.$getControls().forEach(function (control) {
        if (control.$valid) {
            data[control.$name] = control.$modelValue;
            control.$processModelValue(); // For normalization
        }
    });
    server_post(data).then(
        /* … */
    );
};

该表单包括一些“标准”输入,还包括一些特殊的伪指令,它们带有ng-modelname,它们的行为类似于复杂的输入。

不幸的是,这些指令在其模板中包含一些“标准”输入。然后,这些内部输入的值就会显示在我的data对象中。

我以为我可以将这些内部输入包装成record函数应该忽略的子形式。但是子窗体仍会在扫描过程中显示。而且,子表单的有效性会影响父表单的有效性。

有没有办法打破子窗体和父窗体之间的链接?

作为替代方案,在扫描期间识别控件实际上是子窗体的一种干净方法是什么?

我尝试过:

        if (control.$valid && !(control instanceof data_form.constructor)) {
            /* … */
        }

,但是它失败了,因为显然data_form.constructorObject(),因此所有控件都将被忽略。据我所知,FormController函数是AngularJS的内部功能。

还是有其他方法可以使我的“内部”输入隐藏在表单中?

0 个答案:

没有答案