2016-09-22 50 views
0

我需要檢查在導航到下一個選項卡之前,當前html頁面上的元素(使用ui-view呈現)是髒的還是純淨的。如何從控制器訪問ngform名稱?

父頁面:

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

和HTML模板將呈現給innerTabHolder的觀點是:

<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」到switchTab功能,在這裏,我可以2.

我使用窗體的$dirty$pristine檢查,如果在位置做同樣的位置1用戶對錶單進行了任何更改。因此,在點擊導航標籤時,表單變得未定義。

如何訪問控制器中子視圖的$dirty屬性。

Plunker用於演示:

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

+0

我不太清楚,如果訪問curForm我正確理解你想要的:你想從主控制器訪問子視圖內的變量?通常在我的應用程序中,每個視圖都有自己的控制器,我使用服務在它們之間進行通信 –

+0

我只有1個控制器的所有子視圖。這個演示是一個巨大項目的一小部分。所以,是的,你指出了正確的,我想訪問我的控制器中的子視圖中的變量。因爲,對於所有的四種觀點,只有一個控制者,我認爲這應該是可能的。 –

+0

好吧,爲什麼不更簡單:'' –

回答

0

當你試圖訪問變量總是使用$範圍

使用

$scope.curForm.$dirty 
+0

TypeError:無法讀取在Scope。$ scope.switchInnerTab中未定義的屬性'dirty'。 $ scope.currForm給出未定義。 –

+0

請檢查運動員 –