如何从控制器访问ngform名称?

时间:2016-09-22 14:29:58

标签: angularjs angular-ui-router

在导航到下一个标签页之前,我需要检查当前html页面上的元素(使用ui-view呈现)是脏还是原始。

父页面:

<div class="inner-menu">
    <nav>
      <div>
        <ul class="nav nav-tabs edit-menu" role="tablist">
          <!-- location 1 -->
          <li ng-repeat="innerTab in innerTabListArr" ng-click="switchTab($index, $event)">
            <a role="tab" data-toggle="tab" href="">{{innerTab.text}}</a>
          </li>
        </ul>
      </div>
    </nav>
    <div ui-view="innerTabHolder" name="currForm"></div>      
  </div>

,将呈现给innerTabHolder视图的HTML模板是:

<div class="edit-general" id="General">
  <div class="modal-dialog modal-lg">
    <form class="form-horizontal" name="generalForm">
        <label for="inputL3" class="control-label">Text</label>
        <div class="col-sm-4">
          <input type="text" class="form-control" ng-model="gn.myMdl">
        </div>
        <div class="box-footer">
           <div class="row">
             <div class="col-sm-10">
                  <!-- location 2 -->
                  <button class="btn" type="button" ng-click="switchTab(generalForm, $event)"> BCK </button>
                  <button class="btn" type="button" ng-click="saveGen()">Save Above</button>
                  <button class="btn" type="button" ng-click="switchTab(generalForm, $event)"> FWD </button>
              </div>
            </div>
         </div>
    </form>                            
 </div>
</div>

有多个标签会被渲染到视图中。这是我的控制器:

myApp.controller('compTabCtrl',[ '$rootScope', '$scope', '$state', 'mainWebService',
function($rootScope, $scope, $state, mainWebService){

  $scope.innerTabListArr = [{"text" : "Tab 1"},{"text" : "Tab 2"}];

  $scope.switchInnerTab = function(tabId, event){

  };
}]);

好的,所以这是基本的大纲,我相信,我已经涵盖了所有部分。现在,我的问题是我无法将表单:“generalForm”传递到位置1的switchTab函数,因为我可以在位置2处执行相同的操作。

我使用表单$dirty$pristine来检查用户是否对表单进行了任何更改。因此,在单击选项卡进行导航时,表单将变为未定义。

如何访问控制器中子视图的$dirty属性。

用于演示的Plunker:

https://plnkr.co/edit/06F5JfXltinyxrZbbc14?p=preview

1 个答案:

答案 0 :(得分:0)

当您尝试访问变量时,请始终使用$ scope

使用

访问curForm
$scope.curForm.$dirty