J'essaie de créer une interface graphique pourmettre à jour les entrées de base de données en utilisant angular.js. Ma stratégie actuelle consiste à créer un formulaire pour chaque entrée pouvant être visualisée à l'aide de ng-hide. Je ne parviens pas à accéder aux informations saisies dans le formulaire.
Le code actuel est le suivant:
admin-edit.html:
<div ng-app= "routerApp" ng-controller="FormCtrl">
<div ng-repeat = "question in multChoice" class = "question" required>
<div class = "col-md-12">
<label>Title: {{question.title}}</label>
<br>
<label>Type: {{question.type}}</label>
<br>
<label>Key: {{question.key}}</label>
<br>
<label>Options:</label>
<br>
<div ng-repeat = "option in question.options" class = "likert">
<input type = "radio" name = "{{question._id}}" value = "{{option.value}}" ng-model = "question.userChoice"> {{option.text}}</input>
</div>
</div>
<button ng-click = "edit = !edit; currentQuestion = question">Edit</button>
<div ng-show = "edit">
<br>
<input type = "text" ng-model = "title" >Title</input>
<br>
<input type = "text" ng-model = "type">Type</input>
<br>
<input type = "text" ng-model = "key">Key</input>
<br>
<input type = "text" ng-model = "op1">Option 1</input>
<br>
<input type = "text" ng-model = "op2">Option 2</input>
<button ng-click = "editQuestion(); edit = false">Submit</button>
</div>
</div>
</div>
bits pertinents de formCtrl:
$scope.currentQuestion;
$scope.question;
$scope.title;
$scope.key;
$scope.type;
$scope.editQuestion = function(){
console.log($scope.currentQuestion);
if($scope.title == "" || !$scope.title){
$scope.title = $scope.currentQuestion.title;
}
if($scope.key == "" || !$scope.key){
$scope.key = $scope.currentQuestion.key;
}
if ($scope.type == "" || !$scope.type){
$scope.type = $scope.currentQuestion.type;
}
$scope.question.title =$scope.title;
$scope.question.key = $scope.key;
$scope.question.type = $scope.type;
questions.update($scope.question);
}
Actuellement, $ scope.currentQuestion ne semble jamais avoir été assigné; c'est indéfini. Comment procéder pour définir currentQuestion dans sa portée enfant?
Réponses:
0 pour la réponse № 1Je simplifie peut-être trop les choses, mais je crois que l’initialisation de $ scope.currentQuestion résoudra votre problème, comme dans:
$scope.currentQuestion = {} ; // or load it from somewhere??