从FormController获取表单控件

11 浏览
0 Comments

从FormController获取表单控件

我需要一种方法来遍历AngularJS表单中注册的控件。本质上,我想获取所有$dirty的控件,但是没有一个控件的数组(FormController除了包含控件本身外,还有许多其他属性/函数)。

我一直在查看源代码,我发现FormController中有一个名为“controls”的数组,这正是我要找的数组。有没有办法获取这个值,或者扩展FormController以包括一个返回这个“controls”数组的函数?

编辑: Plnkr演示

另外,我意识到从技术上讲,我可以检查键字符串的第一个字符是否为“$”,但是我想避免这样做,以防将来的Angular版本中FormController/指令发生更改。

编辑2:进一步澄清:我在所有这些中的目标是能够确定哪些特定字段是$dirty的,无论是通过循环遍历整个控件列表(不包括$dirty,$invalid,$error,$name等属性,因为它们存在于Form对象中),还是通过扩展FormController并创建一个仅返回当前$dirty的控件的函数(且不等于其初始值)。

编辑3:我所寻找的解决方案需要适用于不同结构的表单/模型。作用域上的模型是通过AJAX生成的,因此它们的结构已经设定(我想避免硬编码一个新结构,对于我已经通过AJAX接收到的所有数据)。此外,我希望在多个表单/模型中使用此表单提交过程,而每个表单/模型都具有不同的JSON结构-因为它们适用于我们对象模型中的不同实体。这就是为什么我选择要求获取FormController中的“controls”对象的访问权限(我将在下面发布FormController的代码),因为这是我可以获得所有字段的平面数组的唯一地方。

如你所见,表单本身具有私有可用的“controls”数组。我想知道是否有办法扩展FormController,以便我可以将该对象公开?或者创建一个公共函数,以便至少可以查看私有数组?

0