根据来自服务器的值选择默认单选按钮选项

时间:2015-02-03 05:16:29

标签: javascript angularjs radio-button angularjs-ng-repeat

我正在使用angularjs编写一个测验引擎,并且已经能够使用选项成功加载问题,并且还实现了NEXT和BACK按钮,现在工作正常但是我想要当用户单击BACK或NEXT按钮时如果问题已经回答,则预先选择之前的选择。

每个问题都有4个选项,我在选项名称'IsSelected'上有一个属性,我用它来确定用户先前的选项。

我想要它,以便当用户交叉检查答案时,默认情况下应该检查所选的任何先前选项,这是我现在卡住的地方。我见过这个问题

Need to Default select an Angular JS Radio Button  它在设置默认值方面解决了类似问题但不完全相同。

HTML代码:

<div class="col-lg-offset-2 col-lg-5" data-ng-repeat="item in items" style=" border:#000 1px solid;padding:10px 40px 40px 40px">
        <h3 style="color: #0000ff">Question <b style="color:red">{{item.QId}}</b> of <b style="color:green">{{item.QCount}}</b></h3>
        <div>


            <!--<div id="first">{{item.QId}}</div>-->
            <h2>{{item.QId}}. {{item.QText}} </h2>
        </div>
        <div data-ng-repeat="choice in item.AnswerCh">

            <input type="radio" name="choize" data-ng-model="choice.IsSelected" value="choice.IsSelected" /> {{choice.Text}}

        </div>
        <br />
        <div id="ref" style="display: none">{{item.QId}}</div>
        <div id="you">{{choice.choize.Text}}</div>

JS代码:

        $scope.getNext = function () {    
            var quet = $('#ref').html();
            var answ = $('#you').html();
            cbtFact.getNext().update({q:answ,v:quet },
            function (data, status, headers, config){         
                $scope.items = [];
                
                $scope.items = data;
            },
            function (data, status, headers, config) {
            });
        };

        $scope.getPrevious = function () {
            var quet = $('#ref').html();
            var answ = $('#you').html();
            cbtFact.getPrevious().update({ q: answ, v: quet },
            function (data, status, headers, config) {
                $scope.items = [];
                $scope.items = data;
             
            function (data, status, headers, config) {
            });

        };
        

1 个答案:

答案 0 :(得分:1)

如何使用这样的ng-if ..

Fiddle

<div data-ng-repeat="choice in item.AnswerCh">
   <span ng-if="choice.IsSelected">
      <input type="radio" name="choize" data-ng-model="choice.IsSelected" value="choice.IsSelected" checked/> {{choice.Text}}
   </span>
   <span ng-if="!choice.IsSelected">
      <input type="radio" name="choize" data-ng-model="choice.IsSelected" value="choice.IsSelected" /> {{choice.Text}}
   </span>
</div>

或使用Angular Js ngChecked属性

Fiddle

 <div data-ng-repeat="choice in item.AnswerCh">    
     <input type="radio" name="choize" data-ng-model="choice.IsSelected" value="choice.IsSelected" data-ng-checked="choice.IsSelected" /> {{choice.Text}}    
 </div>

更新

使用ng-modelng-value

Fiddle

虽然上述代码都有效,但与ng-model一起使用时遇到了一些问题。

根据Angular Js documentation,这个功能可以使用ng-model和ng-value本身来实现,因此这应该是推荐的方式。 ng-value应该是选中时应设置表达式的值。

<div data-ng-repeat="choice in item.AnswerCh">
        <input type="radio" name="choize" data-ng-model="choice.IsSelected" ng-value="true" /> {{choice.Text}}       
 </div>