ng-geprüft und ng-ändern Sie den radio-button funktionieren nicht zusammen - angularjs
http://plnkr.co/edit/RP9SpO1qGjn5Ua6pZJ3D?p=preview
js
angular.module("sampleapp", []).controller('samplecontroller', function($scope,$rootScope) {
$scope.radii = [
{id:.25, checked:false, name:"1/4 Mile"},
{id:.5, checked:false, name:"1/2 Mile"},
{id:1, checked:false, name:"1 Mile"},
{id:2, checked:true, name:"2 Mile"},
{id:3, checked:false, name:"3 Mile"},
{id:4, checked:false, name:"4 Mile"},
{id:5, checked:false, name:"5 Mile"}
];
$scope.handleRadioClick = function(){
alert();
};
});
und html
<div class="radio">
<label>
<input type="radio" name="radius"
ng-change="handleRadioClick()"
ng-checked="radius.checked">
{{radius.name}}
</label>
</div>
</li>
Hinweis "2 Meile" radio-Eingang aktiviert ist auf der Grundlage der Radien Umfang Struktur. Warum nicht das ng-ändern Sie die Funktion auslösen?
Wenn ich hinzufügen ng-Modell, wird die Funktion ausgelöst wurde, aber die ng-checked funktioniert nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, weil Sie nicht mit
ng-model
:GABEL-PLUNKER
UPDATE:
Tut mir Leid, dass ich nicht bemerkt, dass Sie wollte, einen Standard-radio-button aktiviert, wenn das der Fall ist, dann die Annäherung, die Sie nehmen sind, ist falsch. Sie müssen berücksichtigen, dass das Modell als nicht-individuelle Teile, die in einer Gruppe von radio-buttons, aber als ganzes, Sie sollen einen Wert statt. Sie müssen nicht zu verwenden
ng-repeat
's radio-scope-variable verwenden Sie stattdessen ein anderesng-model
alsselectedRadius
Modell. Sie sind input-radio muss einen Wert haben, und in diesem Fall wir ll verwendenng-value
um zu bestimmen den aktuellen Wert des Modells.AKTUALISIERT PLUNKER [2014 September]
JAVASCRIPT
Controller
HTML
AKTUALISIERT PLUNKER [2015 Januar]
dcz.switcher problem unten vorgeschlagen, dass die Lösung oben nicht ausgelöst
ng-change
event-handler, wenn ein radio-button ist reselected. Das Hauptproblem war, dass dieng-model
bezog sich auf dieng-repeat
's Umfang und nicht zu den controller-scope aus der zweiten ändern. Um dieses problem zu lösen Sie können das$parent
Eigenschaft. Eine alternative wäre die VerwendungcontrollerAs
alias und den alias selbst Zugriff auf den controller-Eigenschaft. Um zu verstehen, mehr über die Bereiche in AngularJS, ich schlage vor, Sie Lesen Sie mehr über es hier.HTML
Default-Werte verwenden und alles wird wie ein Zauber funktioniert, keine Notwendigkeit zu $beobachten, Umfang oder nichts... und Sie müssen ja ng-model
HTML-Beispiel:
JS optional:
ng-checked
Sie sagt: "Beachten Sie, dass diese Richtlinie sollte nicht verwendet werden, zusammen mit ngModel, da dies zu unerwartetem Verhalten führen."ngModel
undngChecked
sind nicht gedacht, um zusammen verwendet werden. Siehe AngularJS: ng-Modell nicht verbindlich ng-checked bei Checkboxen.Dies ist, weil ng-change erfordert ngModel anwesend zu sein.
Hoffe, das hilft. Prost!
Den
ng-change
Richtlinie erfordert dieng-model
Richtlinie vorhanden sein.Aus der Docs:
Die
ng-model
undng-checked
Richtlinien sollten nicht zusammen verwendet werdenAus der Docs:
Stattdessen legen Sie die gewünschten Initialen Wert aus der Steuerung.
Weitere Informationen finden Sie unter
input[radio]
- Direktive-API-Referenz