Как показать автоматически выбранные радиокнопки, когда это происходит из цикла? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть небольшая заявка на попытку онлайн-экзамена.Мой набор вопросов приходит из БД с использованием цикла.Я хочу отредактировать уже пройденный экзамен.У меня есть ответ на множество вопросов.Но я не могу показать автоматический выбор для попытки выбора радиокнопок.

Вот мой набор ответов

{"1": "A", "2": "A", "6":" А», "10": "А", "14": "А", "21": "В", "26": "С", "31": "В", "33":«C», «34»: «B», «54»: «C»}

Вот мои вопросы, которые я показываю на странице просмотра, используя цикл

<div class="row" style="margin-top: 20px;">
<section ng-repeat="count in subject.test_count" ng-cloak  class="col col-3">
    <div class="inline-group" ng-if="count%2!='0'">
        <b style="width: 25px;display: inline-grid;">{{count}}</b>
        <input type="radio" name="{{subject.name}}{{count}}"
               id="a{{subject.name}}{{count}}" class="input-hidden"
               ng-model="questiondata[subject.name][count]"
               value="A" ng-checked="true">
            <label for="a{{subject.name}}{{count}}" >
            <p>A</p>
            </label>

        <input type="radio" name="{{subject.name}}{{count}}" 
               id="b{{subject.name}}{{count}}" class="input-hidden"
               ng-model="questiondata[subject.name][count]" value="B">
        <label for="b{{subject.name}}{{count}}" >
            <p>B</p>
        </label>

        <input type="radio" name="{{subject.name}}{{count}}"
               id="c{{subject.name}}{{count}}" class="input-hidden"
               ng-model="questiondata[subject.name][count]" value="C">  
        <label for="c{{subject.name}}{{count}}" >
            <p>C</p>
        </label>

        <input type="radio" name="{{subject.name}}{{count}}"
               id="d{{subject.name}}{{count}}" class="input-hidden"
               ng-model="questiondata[subject.name][count]" value="D">
        <label for="d{{subject.name}}{{count}}" > 
            <p>D</p>
        </label>

        <input type="radio" name="{{subject.name}}{{count}}"
               id="e{{subject.name}}{{count}}" class="input-hidden"
               ng-model="questiondata[subject.name][count]" value="E">
        <label for="e{{subject.name}}{{count}}" >
            <p>E</p>
        </label>

    </div>
</section>

1 Ответ

0 голосов
/ 11 апреля 2019

Есть пара вещей, которые с этим не согласны. Во-первых, вы ngRepeating через значения test_count, а не фактические объекты, чтобы решить, что вы захотите сделать что-то вроде этого:

    <section ng-repeat="(key,value) in subject.test_count" ng-cloak  class="col col-3">
    {{key}} {{value}} 
    <span class="inline-group" ng-if="count%2!='0'">
        <input type="radio" name="{{subject.name}}{{key}}"
               id="a{{subject.name}}{{key}}" class="input-hidden"
               ng-model="questiondata[subject.name][key]"
               value="A">
            <label for="a{{subject.name}}{{key}}" >A</label>

        <input type="radio" name="{{subject.name}}{{key}}" 
               id="b{{subject.name}}{{key}}" class="input-hidden"
               ng-model="questiondata[subject.name][key]" value="B">
        <label for="b{{subject.name}}{{key}}" >B</label>

        <input type="radio" name="{{subject.name}}{{key}}"
               id="c{{subject.name}}{{key}}" class="input-hidden"
               ng-model="questiondata[subject.name][key]" value="C">  
        <label for="c{{subject.name}}{{key}}" >C</label>

        <input type="radio" name="{{subject.name}}{{key}}"
               id="d{{subject.name}}{{key}}" class="input-hidden"
               ng-model="questiondata[subject.name][key]" value="D">
        <label for="d{{subject.name}}{{key}}" > D</label>

        <input type="radio" name="{{subject.name}}{{key}}"
               id="e{{subject.name}}{{key}}" class="input-hidden"
               ng-model="questiondata[subject.name][key]" value="E">
        <label for="e{{subject.name}}{{key}}" >E</label>

    </span>
</section>

После того, как у вас есть переключатели и сопоставление темы (я позволил себе немного поразмышлять над настройкой данных), вам нужно заполнить данные вопроса, используя значения, которые вы указали выше:

$scope.questiondata[0] = angular.copy($scope.subject.test_count);

Теперь мы можем видеть, что $ scope.questiondata [0] [1] = $ scope.subject.test_count [1] = 'A', что означает, что будет выбран A.

Вот пример полного контроллера: https://plnkr.co/edit/fyJwfLc6Qb7b7p4ZLgqI

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...