2016-07-11 12 views
0

Ich habe ein Bearbeitungsformular, das Daten zu einem Mongo db Express und eckig schiebt. Ich verwende ng-Modell für meine Daten. Die PUT funktioniert ordnungsgemäß, um die Datenbank zu aktualisieren. Aber ich kann nicht scheinen, diese gefundenen Daten als Anfangswerte auf den Eingabefeldern in meinem GET zu machen. Ich glaube, ich verbinde die Dinge falsch. Wenn das der Fall ist, was mache ich falsch? Vielen Dank im Voraus.ng-Modell als erste Eingabe auf Formular

Mein Controller

app.controller('EditController', ['$scope', '$http', '$routeParams', function($scope, $http, $routeParams) { 

    var self = this; 
    $http({ 
     method: 'GET', 
     url: '/users/' + $routeParams.id, 
     data: $routeParams.id 
    }).then(function(response) { 
     // console.log(response.data); 
     self.id = $routeParams.id; 
     self.name = response.data.name; 
     self.age = response.data.age; 
     self.gender = response.data.gender; 
     self.img = response.data.img; 
    }); 

    this.editForm = function() { 
      console.log('editForm'); 
      console.log('Formdata: ', this.formdata); 

      $http({ 
       method: 'PUT', 
       url: '/users/' + $routeParams.id, 
       data: this.formdata, 
      }).then(function(result) { 
       self.formdata = {} 
      }); 
    } // end editForm 

}]); 
// end EditController 

app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider){ 
    $locationProvider.html5Mode({enabled:true}); 

    $routeProvider.when('/', { 
     templateUrl: 'partials/match_partial.html' 
    }).when('/edit/:id', { 
     templateUrl: 'partials/edit_partial.html', 
     controller: 'EditController', 
     controllerAs: 'editctrl' 
    }) 

}]); 

Mein HTML

<div> 
    <a ng-href="/"> 
     <br> 
     <h3 class="back">Back to Match</h3> 
    </a> 
    <h1 class="editHeader"> 
     Edit {{editctrl.name}}  
    </h1> 
    <form ng-submit="editctrl.editForm()"> 
     <input type="text" ng-model="editctrl.formdata.id" placeholder="{{editctrl.id}}"> 
     <input type="text" ng-model="editctrl.formdata.name" placeholder="{{editctrl.name}}"> 
     <input type="text" ng-model="editctrl.formdata.age" placeholder="{{editctrl.age}}"> 
     <input type="text" ng-model="editctrl.formdata.gender" placeholder="{{editctrl.gender}}"> 
     <input type="text" ng-model="editctrl.formdata.img" placeholder="{{editctrl.img}}"> 
     <input type="submit"> 
    </form> 
</div> 

Antwort

0

Sie einfach das ganze Objekt festlegen können die response.data, auf diese Weise zu erhalten:

$http({ 
    method: 'GET', 
    url: '/users/' + $routeParams.id, 
    data: $routeParams.id 
}).then(function(response) { 
    // console.log(response.data);  
    // Here 
    self.formdata = response.data; 
}); 

Und es wird automatisch füllt alle Eingaben mit den Objekteigenschaften.

+0

Das hat perfekt funktioniert! Vielen Dank. Wenn du ein bisschen erklären kannst, warum es meinen vorherigen Code nicht mochte, würde ich das wirklich schätzen. Wenn nicht, werde ich die Ursache des früheren Problems weiter untersuchen. Danke noch einmal. – cdoll

+0

Gut zu helfen :) Wenn Sie es manuell einstellen möchten (was völlig unnötig ist), sollten Sie folgendermaßen vorgehen: 'self.formdata = {}; self.formdata.name = ... ' – developer033

Verwandte Themen