2017-02-15 1 views
0

Ich verwende Angular, um den Inhalt eines Formulars an einen API-Endpunkt zu senden. Alles hat gut funktioniert, bis ich versucht habe, eines der Texteingabefelder in ein Auswahldropdown zu ändern. Ich benutze ng-options, um die Select-Dropdownliste zu füllen, aber wenn ich gehe, um den Formularinhalt an den API-Endpunkt zu senden, wird der Wert des select-Elements nicht gesendet. Im Folgenden finden Sie den HTML-Code (wobei die Informationen zur Klasse und zum Styling aus Platzgründen entfernt sind) und den Winkelwert.Elementwert auswählen, der nicht mit anderen Formularelementen in Angular gesendet wird

HTML

<form ng-submit="self.addNewEmployee()" novalidate> 
    <input ng-model="self.form.employeeName" type="text"> 
    <select ng-model="self.form.department" ng-options="dept.name as dept.Name for dept in self.departmentList"> 
    </select> 
    <input ng-model="self.form.salary" type="text" /> 
    <input id="btnSubmit" type="submit" value="Add Employee" /> 
</form> 

Angular

<script type="text/javascript"> 
    var adminToolApp = angular.module('adminToolApp', []); 

    adminToolApp .controller('AdminToolController', function ($scope, $http) { 
     var self = this; 
     self.departmentList = []; 

     // Gets all departments to populate select input 
     $http({ 
      method: 'GET', 
      url: 'https://api.myServer.net/api/getAllDepartments', 
      headers : { 
       'Content-Type': 'application/json', 
      } 
     }).then(function(result) { 
      self.departmentList = result.data; 
     }, function (error) { 
      console.log(error); 
     }); 

     // Submits form data to add new employee 
     self.addNewEmployee = function() { 
      return $http({ 
       method: 'POST', 
       url: 'https://api.myServer.net/api/addNewEmployee', 
       data: angular.toJson(self.form), 
       headers: { 
        'Content-Type': 'application/json', 
       } 
      }).then(_submissionSuccess, _submissionFailure); 
     }; 

     // Private methods 

     function _submissionSuccess(response) { 
      self.submissionResults = response.data; 
     }; 

     function _submissionFailure(response) { 
      self.submissionResults = 'An error occured: ' + response.status; 
     }; 
    }); 
    </script> 

Wenn ich die Nutzlast inspizieren, um die API zwei der Formelemente vorhanden sind, gesendet werden (employeeName und salary) jedoch Abteilung nicht vorhanden ist. Ich definierte self.form.department als ng-model für das select Element, warum wird es nicht als Teil der Formularsammlung übergeben?

Antwort

1

Versuchen Sie, diese

ng-options="dept.Name as dept.Name for dept in self.departmentList"> 
+0

Wow ändern! Das hat den Trick gemacht. Obwohl ich nicht sicher bin warum. War es, weil ich "dept.name als dept.Name" hatte? War der Kleinbuchstabe "Name" das Problem? – webworm

+0

der 'Name' ist der Schlüssel von' departmentList' –

+0

Danke @hadiJz aber ich verstehe immer noch nicht. Warum ddn't ng-options = "dept.name als dept.Name für dept in self.departmentList" 'nicht funktionieren? – webworm

Verwandte Themen