我有一个包含多种表单的页面,我只想一次显示一个.为此,我将每个表单分成一个部分并使用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>
Run Code Online (Sandbox Code Playgroud)
一切正常,我可以在表格等之间导航
因为我不希望用户打开一个部分,如果他们当前正在编辑的部分包含验证错误,我尝试检查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
Run Code Online (Sandbox Code Playgroud)
这是因为我正在使用ng-include?那么在控制器中无法访问这些表单吗?