我有一个包含多个表单的页面,我只想一次显示一个。为此,我将每个表单分成一个部分,并使用 Bootstrap 的手风琴插件,我一次只允许一个打开的部分。
我的标记看起来像这样:
<a ng-click="open_section('section1')">Section 1</a>
<div collapse="section1">
<form name="section1Form">
</form>
</div>
<a ng-click="open_section('section2')">Section 2</a>
<div collapse="section2">
<form name="section2Form">
</form>
</div>
一切正常,我可以在表格等之间导航。
因为如果用户当前正在编辑的部分包含验证错误,我不希望用户打开一个部分,所以我尝试检查open_section
与它关联的表单是否有效的函数。
我试过了,但我做不到。我无法访问与负责页面的控制器中的表单关联的 FormController。出于某种原因,它们没有在示波器上发布。
这是我尝试过的:
$scope.section1Form
是undefined
尝试过
$scope.$watch('section1Form, function(){})
,仍然未定义尝试将表单的名称添加为第二个参数,
open_section
如下所示:open_section('section1', section1Form)
但在函数中,第二个参数是undefined
.
在<form></form>
标签之间,我可以访问 FormController,但在它们之外我没有。由于事件来自<form>
(关闭,打开部分)之外,我无法将 FormController 传递给我的控制器来检查我的表单的有效性。
有没有办法解决这个问题,或者我应该重构我的页面?
我正在使用 Angular 1.1.5 顺便说一句。
此外,检查 AngularJS Batarang Chrome 插件,我可以看到表单作为子范围发布到当前范围。
编辑:这是范围层次结构查找此应用程序的方式
- root
|
---current controller\'s scope
|
----scope that contains the forms
这是因为我在使用ng-include
吗?那么有没有办法在控制器中访问这些表单?