2016-07-13 4 views
0

Ich habe ein Hauptformular mit einem eingebetteten Formular darin. Das eingebettete Formular ändert sich je nach Art des Formulars, das der Benutzer senden möchte. Das äußere Formular bleibt in jedem Fall gleich. Ich versuche, den Inhalt beider Formulare zu nehmen und sie gleichzeitig einzureichen. Ich kombiniere die Formulare auf demselben Modell. Äußeres Formular: formHolder.outer..., Inneres Formular: formHolder.inner...Eingebettete Richtlinie übergibt ihre Formulardaten nicht an übergeordneten Controller

Ich baue das auf der Annahme auf, dass eine Direktive innerhalb eines Controllers Zugriff auf die Variablen des Controllers hat.

HTML

<div ng-controller="MakeRequestCtrl"> 
    <ng-form name="make_request"> 
     <template-maker formtype="email"></template-maker> 
     <template-maker formtype="email"></template-maker> 
     <template-maker formtype="email"></template-maker> 

     <input type="text" ng-model="formHolder.outer.fname" /> 
     <input type="text" ng-model="formHolder.outer.lname" /> 
     <input type="email" ng-model="formHolder.outer.email" /> 

     <input type="submit" ng-click="submitForm(formHolder)" value="Submit"/> 
    </ng-form> 
</div> 

Innere Richtlinie

appDirectives.directive('templateMaker', function(){ 
    return{ 
     require: '^form', 
     restrict: 'AE', 
     scope: { 
      formtype: '@', 
      formHolder: '=' 
     }, 
     templateUrl: 'tp/template_controls.html', 
     link: function(scope){ 
      ... 
     } 
    } 
}); 

Outer-Controller

appControllers.controller("MakeRequestCtrl", function($scope){ 
    ... 
    $scope.returnForm = function(user){ 
     console.log(user); 
    } 
    ... 
}); 

Wenn ich das Formular abgesendet haben, und ch Eck die Konsole. Ich erhalte nur den äußeren Forminhalt.

Wie kann ich den inneren Formularinhalt mit dem äußeren Formularinhalt in mein formHolder Objekt zusammenführen?

Antwort

0

Ich habe vergessen, das Attribut form-holder dem Direktivenelement hinzuzufügen.

<template-maker formtype="email" form-holder="formHolder" ></template-maker> 

Es ist auch wichtig, dass camelcase Variablen in Richtlinie Tive zu erinnern sind mit Bindestrichen zwischen Wechsel Fall dargestellt, zum Beispiel sportsCar würde sports-car sein.

Verwandte Themen