我正在为我的大学项目创建一个小应用程序,我有一个场景,当用户点击一个单选按钮时,应该触发一个事件。
My Angular code block:
<div ng-repeat="q in questionList " ng-if="ExamOver == false">
<h2>{{count+1}} .{{q.questionText}}</h2>
<ul>
<li ng-repeat="d in q.Choices">
<input type="radio" name="isCorrect" ng-model="correctAnswer.isworking" ng-change="getDetails($index,d,correctAnswer.isCorrect);" value="Yes" />
{{d.choiceText}}
</li>
</ul>
</div>
在我的控制器中,我有这段代码:
$scope.correctAnswer = {isCorrect : false};
$scope.getDetails = function (index, choiceList, isCorrect) {
/* some logic... */
}
事件每个按钮只发射一次,我试图解决这个过去几个小时没有任何进展,有人可以指导我在这里做错了吗?
答案 0 :(得分:8)
ng-model
)的值发生变化时, ng-change
将被触发。在这里,您的所有单选按钮都具有相同的value="Yes"
。这就是为什么不触发ng-change的原因。来自docs:
在用户更改输入时评估给定的表达式。该 表达式会立即进行评估,与JavaScript onchange不同 只在变化结束时触发的事件(通常是在变化时) 用户离开表单元素或按返回键。)
良好的解决方案取决于您的需求,但有哪些想法:
为您的输入设置不同的值:
<li ng-repeat="d in q.Choices">
<input type="radio"
name="isCorrect"
ng-model="correctAnswer.isworking"
ng-change="getDetails($index, d, correctAnswer.isCorrect)"
ng-value="$index" />
{{d.choiceText}}
</li>
点击收音机时启动你的功能:
ng-click="getDetails($index, d, correctAnswer.isCorrect)"
答案 1 :(得分:1)
ngChange会被触发。
您的单选按钮都具有相同的值,即“是”
<input type="radio" name="isCorrect" ng-model="..." ng-change="..." value="Yes" >