【问题标题】:AngularJS problems with radio button not selecting单选按钮未选择的AngularJS问题
【发布时间】:2016-07-10 20:44:20
【问题描述】:

我试图在单选按钮上捕捉 ng-change 事件,但问题是只有当我第二次单击同一组中的任何收音机时才会检查它。此外,当我第一次单击单选时,会调用 ng-changed,但如果我再次单击另一个单选按钮或同一个单选按钮,则不会。

<div>
<div ng-repeat="element in questions" ng-class="{'in':$first,'hidden': !$first}">
    <h1>{{element.question}}</h1>
    <div>
        <input type="radio" name="answer" ng-value="A" ng-model="$parent.answer" ng-change="enableSubmit()">{{element.answerA}}</input>
        <input type="radio" name="answer" ng-value="B" ng-model="$parent.answer" ng-change="enableSubmit()">{{element.answerB}}</input>
        <input type="radio" name="answer" ng-value="C" ng-model="$parent.answer" ng-change="enableSubmit()">{{element.answerC}}</input>
    </div>
</div>
<button id="prev" class="hidden" ng-click="prevQuestion()">Anterior</button>
<button id="next" ng-click="nextQuestion()" disabled>Siguiente</button>
</div>

这可能有什么问题?提前致谢。

【问题讨论】:

  • 首先,input标签是一个自闭合标签,那么你的HTML在语义上是不正确的。
  • 做到了,但并没有解决问题
  • 您可以在 plnkr 中提供一个简单的演示,以演示您的 JS 控制器和完整视图如何。.. 很难用这种方式讲述..

标签: angularjs radio-button


【解决方案1】:

由于ng-repeat 创建了自己的$scope,正如您在此answer 中看到的那样,您必须最好使用controller-as-syntax 来实现您想要的。

使用您的代码的演示:

DEMO

注意:我不知道您是否将jQuery 用于隐藏/禁用按钮之外的其他功能,但是所有这些事情都可以用 Angular 轻松完成,像这样:

<input type="radio" ng-model="main.answer" value="A" ng-change="enableSubmit()" />

$scope.enableSubmit = function() {
    $('#next').prop('disabled', false);
};

在视图中应该就是这个:

<button ng-disabled="!main.answer" id="next" ng-click="nextQuestion()">Siguiente</button>

希望对你有帮助!

【讨论】:

  • 不客气,你能检查答案是否正确吗?只需点击左侧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-25
  • 2017-09-05
  • 2015-05-26
  • 2017-06-21
  • 2018-05-10
  • 2012-12-09
  • 2014-08-17
相关资源
最近更新 更多