J'ai un problème de ng-model ne recevant pas appelé dans le contrôleur si j'utilise ng-repeat. Comme vous pouvez le voir ci-dessous, dans la section sports, j'obtiens la valeur de sport indéfinie lorsque le formulaire est soumis au contrôleur. Cependant, pour les demandes, je reçois tout ce que je saisis dans le champ. J'ai essayé d'identifier par ID mais cela ne fonctionne pas aussi bien.Comment appeler la valeur quand ng-model avec ng-repeat est utilisé? Angular JS
<form ng-submit="sendDetails(sports, demands)" ng-class="form-horizontal" enctype="multipart/form-data">
<div class="row">
<div class="form-group col-md-6">
<label class="control-label col-sm-2">Sports:</label>
<input class="form-control" ng-model="sports" ng-repeat="sports in selectedSports" type="text" disabled/>
</div>
</div>
<div class="row">
<div class="col-md-6">
<input class="form-control" ng-model="demands" type="text"/>
</div>
<div class="col-md-6">
<button class="btn btn-default" type="submit">Submit</button>
</div>
</div>
</form>
angular.factory('sportsFactory', function($http) {
return {
postAdministrationEntries: function ($sports, $demands){
var fd = new FormData();
fd.append('sports', $sports);
fd.append('demands', $demands);
return $http.post('/sendDetails', fd,{
headers: { 'Content-Type': undefined }
});
}
}
Contrôleur
$scope.sportsValues =[];
$scope.sendDetails = function($sports, $demands){
if($demands.length > 0){
var sendDetailsPromise = sportsFactory.sendDetails($sports, $demands);
sendDetailsPromise.success(function (data){
$sportsValues = data;
};
Le code a des problèmes parce que la 'ng répétition 'crée des étendues enfant et place le' ng-model' sur la portée de l'enfant. Souvenez-vous de la meilleure pratique: ** Mettez toujours un point '.' dans votre ng-models **. Lisez [Quelles sont les nuances de l'héritage prototypal/prototypique de portée dans AngularJS?] (Https://stackoverflow.com/questions/14049480/what-are-the-nuances-of-scope-prototypal-prototypical-inheritance-in-angularjs). – georgeawg
Y a-t-il une raison pour laquelle le serveur doit publier en utilisant 'multipart/form-data'? Il est plus efficace de POST avec le paramètre par défaut AngularJS 'application/json'. – georgeawg
Le tableau 'selectedSports' est-il un tableau d'objets ou un tableau de primitives? – georgeawg