我正在尝试从我的控制器中读取表单。但我得到了未定义的错误。这是我的示例代码。
HTML -
<uib-tabset name="tabMain" id="tabMain1">
<uib-tab heading="SomeTabName" name="tab1" id="tab1X">
<form name="formId" class="form-horizontal" novalidate autocomplete="off"></form>
</uib-tab>
</uib-tabset>
控制器 -
$scope.formId.$setPristine();
问题是$ scope无法读取formId。它的说法未定义。
请有人帮助我。
由于 Gulrej
答案 0 :(得分:1)
在您的控制器中,在顶部附近添加此行:
$scope.forms = {};
然后,在您的<form>
元素中,将名称更改为<form name="forms.formId"...
现在,在您尝试访问$scope.formId
并获取未定义错误的代码中,将代码更改为$scope.forms.formId
,它应该可以正常工作。
我找到了answer here。
答案 1 :(得分:0)
在控制器最初运行后,表单仅将自身注册到控制器的$ scope。因此,即使一切设置正确,$ scope也将返回undefined。
在你的示例中,为了对theForm的存在做出反应,你可以在theForm上设置一个观察器,根据它的存在来设置调试文本:
$scope.$watch('theForm', function(theForm) {
if(theForm) {
$scope.formDebugText = 'Form in Scope';
}
else {
$scope.formDebugText = 'Form is Undefined';
}
});
答案 2 :(得分:0)
我面临着同样的问题,那就是在uib-tab之间分布输入的外部形式。
深入研究angularjs docs之后,您需要在uib-tabset之外公开一个表单。
<form name="outerForm" class="tab-form-demo">
<uib-tabset active="activeForm">
<uib-tab index="0" heading="Form Tab">
<form name="nestedForm">
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" required ng-model="model.name"/>
</div>
</form>
</uib-tab>
</uib-tabset>
</form>
<pre>{{ outerForm.nestedForm | json }}</pre>
或者只是添加一种包装uib-tabset的表单
<form name="outerForm" class="tab-form-demo">
<uib-tabset active="activeForm">
<uib-tab index="0" heading="Form Tab">
<div class="form-group">
<label>Name</label>
<input type="text" class="form-control" required ng-model="model.name"/>
</div>
</uib-tab>
</uib-tabset>
</form>