2016-04-23 11 views
1

Ich habe derzeit ein Formular mit einem <select> und Optionen wie folgt. Ich versuche, die Werte in meine db zu übergeben, aber beim Ausführen der App-Kategorie kommt als undefined. Das Formular verwendet ng-controller = "eventCtrl"Angular JS: Übergeben Sie einen Formularauswahloptionswert an Datenbank funktioniert nicht

Formularauswahlcode unten.

<div class="input-field col s5"> 
<select class="browser-default"> 
    <option value="" disabled selected>Choose your category</option> 
    <option value="Mountain" ng-model="category">Mountain</option> 
    <option value="Forest" ng-model="category">Forest</option> 
    <option value="Beach & Sea" ng-model="category">Beach & Sea</option> 
    <option value="Fresh Water" ng-model="category">Fresh Water</option> 
    <option value="Aero" ng-model="category">Aero</option> 
    <option value="Desert" ng-model="category">Desert</option> 
</select> 
</div> 

Below eventCtrl-Code.

angular.module('socialApp') 
.controller('eventCtrl', function($scope, $http) { 
    $scope.createEvent = function() { 
    $http.post('/events/createEvent', { 
    title: $scope.title, 
    category: $scope.category, 
    city: $scope.city, 
    state: $scope.state, 
    date: $scope.date, 
    time: $scope.time, 
    description: $scope.description 
    }) 
    .then(function(result) { 
    console.log(result.data.status); 
    console.log(result); 
    }) 
}; 
}); 

Ich bin so verloren mit diesem bitte helfen!

Antwort

5

Das ng-model Attribut sollte als so anstelle jedes option Element auf dem select Element sein:

<div class="input-field col s5"> 
<select class="browser-default" ng-model="category"> 
    <option value="" disabled selected>Choose your category</option> 
    <option value="Mountain">Mountain</option> 
    <option value="Forest">Forest</option> 
    <option value="Beach & Sea">Beach & Sea</option> 
    <option value="Fresh Water">Fresh Water</option> 
    <option value="Aero">Aero</option> 
    <option value="Desert">Desert</option> 
</select> 
</div> 

ich auf jeden Fall die documentation auf diese nachschauen würde, da es sehr detailliert ist!

+4

Bedenken Sie auch die 'ngOptions' Direktive https://docs.angularjs.org/api/ng/directive/ngOptions – hakazvaka

+0

Ja Die "ngOptions" -Richtlinie ist sehr gut zu prüfen. Persönlich verwende ich statische HTML-Listen mit eckigen, wenn es a) eine lange Liste und b) wird sich nicht ändern. Dies liegt daran, dass "ng-options" und "ng-repeat" Leistungsprobleme mit sehr langen Listen haben können! – cnorthfield

+0

@donghoonkim, wenn diese oder eine andere zukünftige Antwort Ihre Frage löst, können Sie sie durch Klicken auf das Häkchen akzeptieren. Dies zeigt der breiteren Gemeinschaft, dass Sie eine Lösung gefunden haben und sowohl dem Antworter als auch Ihnen einen guten Ruf verschaffen. Es besteht keine Verpflichtung, dies zu tun. – cnorthfield

0

Betrachten ngOptions wie folgt aus:

<select ng-model="category" 
     ng-options="obj as obj.name for obj in arrayOfObject" /> 

Der eine als b Syntax können Sie ein an das Modell binden, während b zeigt für die Drop-Down-Label.

Wenn in Fall, dass Sie den Wert auf Änderung Gebrauch erhalten müssen ng-change="getSelectedValue(category)"

Verwandte Themen