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>
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
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