2016-09-22 2 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 на месте 1, где, как я могу сделать то же самое на месте 2.

Я использую форму-х $dirty и $pristine, чтобы проверить, Пользователь внес какие-либо изменения в форму. Таким образом, при нажатии на вкладку для навигации форма становится неопределенной.

Как получить доступ к свойству подкатегория $dirty в контроллере.

Plunker для демонстрации:

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

+0

Я не совсем уверен, если я правильно поняли, что вы хотите: вы хотите получить доступ к переменным в суб-представлении от главного контроллера? Обычно в моих приложениях каждый вид имеет свой собственный контроллер, и я использую службы для связи между ними. –

+0

У меня есть только 1 контроллер для всех подзадач. Эта демонстрация - небольшая часть огромного проекта. Итак, да, вы указали на это правильно, я хочу получить доступ к переменным в sub view в моем контроллере. Поскольку, по моему мнению, это только один контроллер, для всех четырех видов это должно быть возможно. –

+0

Итак, почему бы не проще: '' –

ответ

0

Когда вы пытаетесь получить доступ к переменной всегда использовать $ объем

curForm доступа с использованием

$scope.curForm.$dirty 
+0

TypeError: Невозможно прочитать свойство «$ грязный» неопределенного в области видимости. $ Scope.switchInnerTab. $ scope.currForm дает неопределенный. –

+0

, пожалуйста, проверьте плункер –

Смежные вопросы