2016-07-10 17 views
1

Ich versuche, das ng-change-Ereignis auf einem Optionsfeld abzufangen, aber das Problem ist, dass es nur überprüft wird, wenn ich zum zweiten Mal auf einem der Radios in der gleichen Gruppe klicke . Wenn ich zum ersten Mal auf ein Radio klicke, wird ng-changed zwar angerufen, aber nicht, wenn ich erneut auf einen anderen Radioknopf oder auf denselben klicke.AngularJS Probleme mit Optionsfeld nicht auswählen

<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> 

Was könnte daran falsch sein? Danke im Voraus.

+0

Zunächst ist das 'input' -Tag ein * selbstschließendes * Tag, dann ist Ihr HTML semantisch inkorrekt. – developer033

+0

Fertig, aber es löst nicht das Problem – Xabi

+0

Sie könnten eine einfache Demo in PLNKR zur Verfügung stellen, um zu demonstrieren, wie ist Ihr JS-Controller und vollständige Ansicht .. es ist schwer, etwas auf diese Weise zu sagen .. – developer033

Antwort

1

Seit ng-repeat schafft ihre eigene $scope, wie Sie in diesem answer sehen können, müssen Sie, vorzugsweise verwenden, controller-as-syntax zu erreichen, was Sie wollen.

Eine Demo mit Ihrem Code arbeiten:

DEMO

Hinweis: Ich weiß nicht, ob Sie jQuery für etwas anderes als verstecken/deaktivieren Tasten sind, aber alle, dass Dinge mit Angular, wie folgt getan werden können:

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

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

Sollte gerade dies in Ansicht sein:

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

Ich hoffe, es hilft!

+0

Ja, das hat funktioniert. Vielen Dank! – Xabi

+0

Gern geschehen, können Sie die Antwort als richtig prüfen? Klicken Sie einfach auf den Link <===== – developer033

Verwandte Themen