2016-07-14 10 views
1

Ich möchte einen Assistenten in meiner App erstellen. Ich habe Nav-Schritte angezeigt und durch Anklicken von Schritten ändere ich den Inhalt von ng-include. ng-Include besteht aus einem Formularnamen stepForm, auf den ich von außen zugreifen möchte. Inside Form habe ich einige Felder, die dynamisch aus generieren und ich möchte nur überprüfen, ob das Formular $valid auf jedem Schritt ist.Zugriffsformular innerhalb ng-include innerhalb ng-repeat

Wenn ich Formular von innen ng-include zu einer Funktion zurückgebe, funktioniert es gut, aber in einigen Fällen möchte ich von außen testen, Angenommen, ich habe Button hier, um die Gültigkeit der Form zu testen, wie erreiche ich das. Brauche Hilfe?

<div ng-controller="StepController"> 
<div class="row"> 
     <button type="button" class="btn btn-danger" ng-click="endCall()"><i class="fa fa-phone fa-fw"></i>End Call</button> 
    </div> 
     <div class="stepwizard"> 
      <div class="stepwizard-row"> 
       <div class="stepwizard-step" ng-repeat="step in view.steps"> 
        <a href="javascript:void(0)" ng-click="goToStep($index)" type="button" class="btn btn-default btn-circle">{{step}}</a> 
        <p>Step {{step}}</p> 
       </div> 
      </div> 
     </div> 

     <div ng-repeat="step in view.steps"> 
      <div ng-if="$index==getCurrentStep()"> 
       <div ng-include="view.template"> 
        <form name="stepForm" novalidate> 
        some form fields which I am validation and just want to check form is valid or not 
        </form> 
       </div> 
      </div> 
     </div> 
    </div> 




    $scope.view = { 
      steps: ['Step 1', 'Step 2'], 
      currentStepNumber: 0, 
     } 
     $scope.getCurrentStep = function() { 
      return $scope.view.currentStepNumber; 
     }; 
     $scope.goToStep = function (index) { 
      if (typeof $scope.view.steps[index] != "undefined") { 
       $scope.view.currentStepNumber = index; 
      } 
     }; 
     $scope.endCall=function(){ form is valid or not ?? } 
+0

verwenden, möchten Sie möglicherweise eine vorhandene Richtlinie für Sie verwenden r Assistent wie: https://github.com/mgonto/angular-wizard –

+0

Nein, ich möchte nicht extern verwenden. –

+0

Was ist das spezifische Problem? Was bedeutet * "Test von außen" *? – charlietfl

Antwort

0

ng-include erstellt einen untergeordneten Bereich. Meine Vermutung ist, Ihr Problem ist, dass die Formularvalidierung Objekt in diesem Kind Umfang ist

Vorschlagen Formularobjekt in der Steuerung des Hinzufügen und die Verwendung dieser Form Objekt als name von <form>

$scope.wiz_form ={}; 

Im Hinblick

<form name="wiz_form.step_1" novalidate> 

Probleme wie diese verschwinden, wenn Sie controllerAs Methodik

+0

Ich versuchte diesen Ansatz, aber wenn ich Schritt 2 ändere, bekam ich Formular undefined in dieser Variablen –

+0

Erstellen Sie eine Demo-Plotter, die Problem – charlietfl

+0

repliziert Danke ich habe es gelöst mit make $ scope.wiz_form = []; als ein Array und innerhalb von ng-include habe ich das Formular nach Index wie wiz_form [{{$ index}}] umbenannt und teste die Gültigkeit auf der endCall-Schaltfläche wie dieser $ scope.wiz_form [$ scope.view.currentStepNumber]. $ valid –