我有一个页面上有多个表单,但我只想一次显示一个表单。为此,我将每个表单分成一个部分,并使用 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上。
这是我尝试的:
$scope.section1Form
为undefined
尝试使用
$scope.$watch('section1Form, function(){})
,仍然是undefined尝试将表单名称作为第二个参数添加到
open_section
中,像这样:open_section('section1', section1Form)
,但在函数中第二个参数是undefined
。
在<form></form>
标签之间,我可以访问FormController,但在它们之外我就不能。由于事件来自<form>
之外(部分的打开、关闭),我无法将FormController传递给我的控制器来检查我的表单的有效性。
有没有办法绕过这个问题,或者我应该重构我的页面?
顺便说一下,我正在使用Angular 1.1.5。
另外,通过AngularJS Batarang Chrome插件检查,我可以看到表单作为子scope发布到当前scope。
编辑:此应用程序的范围层次结构如下所示:
- root
|
---current controller\'s scope
|
----scope that contains the forms
这是因为我在使用ng-include
吗?那么在控制器中没有访问那些表单的途径了吗?
ng-click="something(nameOfForm)"
提交事件,我可以使用它。但是如果事件不发生在表单内部,则我无法使用它。 - adamors