2017-01-07 5 views
0

Я использую 3 вложенных ng-repeat для чтения json и показываю несколько вопросов и ответы. Пока он не работает, но теперь я пытаюсь сохранить эти ответы и отправить их в API. Я не знаю, почему выбранные ответы не хранятся.AngularJS: получить значение из формы

Это мое мнение:

<form> 
    <div class="panel panel-default" ng-repeat="section in questionsTest"> 
     <div class="panel-heading"> 
      <h1>{{ section.name }}</h1> 
      <h3 class="panel-title">{{ section.name }}. {{ 
       section.description }}</h3> 
     </div> 
     <div class="panel-body" ng-repeat="question in section.questions"> 
      {{ question.statement }} 
      <div ng-repeat="answer in question.answers"> 
       <!-- <label class="radio-inline"> <input type="{{ answer.type }}" ng-model="question.value" 
        name="{{ answer.id }}" id="{{ answer.id }}" value="{{ answer.id }}"> 
        {{ answer.valor }} 
       </label>--> 
       <label class="radio-inline"> <input type="{{ answer.type }}" ng-model="question.valor" 
        name="{{ question.id }}" id="{{ answer.id }}" value="{{ answer.id }}"> 
        {{ answer.valor }} 
       </label> 
      </div> 
     </div> 
    </div> 
</form> 

И это контроллер:

$scope.question = {}; 
$scope.testing = function(){ 
    console.log($scope.question); 
}; 

$ scope.testing является функцией тестирования, чтобы увидеть на консоли значение $ scope.question

+0

вы можете мириться plunker? –

+0

Да @Maximus это здесь: https://plnkr.co/edit/m35iYTFdh3G5v3IRghRI?p=preview – proktovief

+0

см. [Мой ответ] (http://stackoverflow.com/a/41525688/2545680) –

ответ

1

Вы настроили html правильно, вы просто не правильно его читаете. Чтобы получить выбранный ответ на первый вопрос, используйте следующее:

$scope.json.section[0].questions[0].value 

Это потому, что когда вы помещаете question.valor в ng-model - это на самом деле n-th вопрос внутри n-th разделе. Эти индексы n определяются количеством элементов внутри вашей исходной структуры данных $scope.json.

Чтобы получить все значения, вы можете перебрать исходный объект:

$scope.testing = function() { 
    var answers = {sections: []}; 

    for (var i = 0; i < $scope.json.section.length; i++) { 
     if (!answers.sections[i]) { 
      answers.sections[i] = {answers: []}; 
     } 

     for (var j = 0; j < $scope.json.section[i].questions.length; j++) { 
      if (!answers.sections[i].answers) { 
       answers.sections[i].answers = []; 
      } 

      answers.sections[i].answers[j] = $scope.json.section[i].questions[j].value 
     } 
    } 
} 
+0

Да, но как я могу получить все значения? Я до сих пор не получаю это – proktovief

+0

просто перебираю его, см. Мой обновленный ответ –

+0

@proktovief, помог ли мой ответ? –

Смежные вопросы