【问题标题】:ng-checked in radio buttonng-checked in 单选按钮
【发布时间】:2018-02-04 15:08:04
【问题描述】:

我正在制作一个测验应用程序。为了显示测验的进度,当用户单击任何单选按钮时,小方框的问题调色板会变成黄色,以表明用户已尝试过该问题。以及这里有一个按钮可以移到上一个问题。为了向用户显示初始答案,我在控制器中使用了带有一些逻辑的 ng-checked 指令。一切正常,但是在尝试一个问题后,当我移到下一个问题并单击在与上一个问题相同的选项上,问题调色板框不会变黄。但是当我单击另一个选项时,它可以正常工作。

.html

<div  class="questionsBox" >
        <div class="questions">{{liveCtrl.questions[liveCtrl.activeQuestion].question}}</div>
        <ul class="answerList">
            <li>
                <label>
                    <input data-id="{{liveCtrl.activeQuestion}}" type="radio" ng-checked="liveCtrl.useranswers[liveCtrl.activeQuestion].q===1" ng-click="liveCtrl.answers(liveCtrl.activeQuestion,1)" name="answerGroup" value="0" >&nbsp;{{liveCtrl.questions[liveCtrl.activeQuestion].optionA}}</label>
            </li>
            <li>
                <label>
                    <input data-id="{{liveCtrl.activeQuestion}}" type="radio" ng-checked="liveCtrl.useranswers[liveCtrl.activeQuestion].q===2" ng-click="liveCtrl.answers(liveCtrl.activeQuestion,2)" name="answerGroup" value="1" >&nbsp;{{liveCtrl.questions[liveCtrl.activeQuestion].optionB}}</label>
            </li>
            <li>
                <label>
                    <input data-id="{{liveCtrl.activeQuestion}}" type="radio" ng-checked="liveCtrl.useranswers[liveCtrl.activeQuestion].q===3"  ng-click="liveCtrl.answers(liveCtrl.activeQuestion,3)" name="answerGroup" value="2" >&nbsp; {{liveCtrl.questions[liveCtrl.activeQuestion].optionC}}</label>
            </li>
            <li>
                <label>
                    <input data-id="{{liveCtrl.activeQuestion}}" type="radio" ng-checked="liveCtrl.useranswers[liveCtrl.activeQuestion].q===4"  ng-click="liveCtrl.answers(liveCtrl.activeQuestion,4)" name="answerGroup" value="3" >&nbsp; {{liveCtrl.questions[liveCtrl.activeQuestion].optionD}}</label>
            </li>
        </ul>
        <div class="questionsRow">
                <button  ng-disabled="liveCtrl.questions.length==liveCtrl.activeQuestion+1" class="subques btn btn-lg btn-secondary"  ng-click="liveCtrl.nextQuestion()">Save & Next</button>
                <button  ng-click="liveCtrl.prevQuestion()" ng-disabled="liveCtrl.activeQuestion == 0" class="subques btn btn-lg btn-secondary" >Previous</button>
        </div>             
    </div>

//问题盘

 <div class="question-pallete">
    <div  id="{{$index}}"  ng-repeat="question in liveCtrl.questions" class="square">
       <a ng-click="liveCtrl.gotoQues($index)">
          {{$index + 1}}
        </a>
</div>

//jquery 为框赋予颜色

<script type="text/javascript">
    $(document).on('click',"input[name='answerGroup']",function(){
        var qid=$(this).data('id');
        console.log(qid);
        $('#'+qid).addClass('box-color');
    });

</script>

控制器功能

this.nextQuestion=()=>{
    live.activeQuestion++;
    //console.log(live.activeQuestion);
};
this.prevQuestion=()=>{
    live.activeQuestion--;
    //console.log(live.activeQuestion);
};
this.gotoQues=(qno)=>{
    live.activeQuestion=qno;
}
this.answers=(qid,option)=>{
    //console.log(qid);
    live.useranswers[qid]={
        q:option

};

当我尝试在 jquery 部分中控制 qid 时,它会在下一个问题中为同一选项输出相同的 qid,但其他选项并非如此。我认为 html 中的“data-id”没有更新那个案例。对不起,如果我不能正确解释它。

【问题讨论】:

    标签: javascript jquery html angularjs


    【解决方案1】:

    我发现您的实施存在 2 个问题。

    1. 我在您的任何输入字段中都没有看到 ng-model
    2. 你为什么不使用ng-class而不是使用jquery来获取id和添加类?

      <label ng-class="val==0 ? 'highlight':''">
      <input type="Radio" ng-model="val" ng-value="0">Option A</label>
      

    这里是jsfiddle link

    【讨论】:

      猜你喜欢
      • 2013-10-01
      • 2014-06-10
      • 2018-08-21
      • 2018-08-24
      • 1970-01-01
      • 2013-07-24
      • 2019-01-01
      • 2017-11-17
      • 1970-01-01
      相关资源
      最近更新 更多