无法在uib-tabset中读取表单

时间:2016-09-15 10:36:44

标签: angularjs

我正在尝试从我的控制器中读取表单。但我得到了未定义的错误。这是我的示例代码。

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

3 个答案:

答案 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>