ng-vérifié et ng-changement de bouton radio travaillent pas ensemble - 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();
};
});
et html
<div class="radio">
<label>
<input type="radio" name="radius"
ng-change="handleRadioClick()"
ng-checked="radius.checked">
{{radius.name}}
</label>
</div>
</li>
Avis "2 Mile" de la radio d'entrée est contrôlé sur la base des rayons de la portée de la structure. Pourquoi ne pas le ng-déclencheurs de changement de la fonction?
Si j'ajoute ng-model, la fonction se déclenche, mais la ng-vérifié ne fonctionne pas.
OriginalL'auteur webmandman | 2014-08-23
Vous devez vous connecter pour publier un commentaire.
C'est parce que vous n'êtes pas à l'aide de
ng-model
:FOURCHE PLUNKER
Mise à JOUR:
Je suis désolé que je n'avais pas remarqué que tu voulais avoir un défaut bouton radio coché, si c'est le cas, alors l'approche que vous prenez est incorrect. Vous devez considérer le modèle comme des non-parties individuelles dans un groupe de boutons radio, mais comme un tout, ils sont censés être une valeur à la place. Vous n'avez pas à utiliser
ng-repeat
's de la radio de la portée de la variable au lieu d'utiliser une autreng-model
comme leselectedRadius
modèle. Vous êtes à l'entrée de la radio doit avoir une valeur, et dans ce cas, nous allons utiliserng-value
pour déterminer la valeur actuelle du modèle.MISE À JOUR PLUNKER [2014 septembre]
JAVASCRIPT
Contrôleur
HTML
mise à JOUR de PLUNKER [Janvier 2015]
dcz.aiguilleur du problème ci-dessous suggéré que la solution ci-dessus ne déclenche pas la
ng-change
gestionnaire d'événement lorsqu'un bouton radio est resélectionnés. Le principal problème était que leng-model
faisait allusion à lang-repeat
champ d'application et de ne pas le contrôleur du champ d'application de la deuxième changement. Pour résoudre ce problème, vous pouvez utiliser le$parent
de la propriété. Une alternative serait d'utilisercontrollerAs
alias et utiliser l'alias lui-même pour accéder à votre contrôleur de la propriété. Pour comprendre plus sur les étendues dans AngularJS, je vous suggère de lire plus sur le sujet ici.HTML
Veuillez vérifier ma mise à jour au sujet de votre problème.
ah, si simple. Je comprends maintenant. je vous remercie beaucoup.
OriginalL'auteur ryeballar
Utiliser les valeurs par défaut et tout fonctionnera comme un charme, pas besoin de $montre portée ou quoi que ce soit... et Oui, vous avez besoin ng-model
Exemple de code HTML:
JS facultatif:
ng-checked
il dit: "Notez que cette directive ne doit pas être utilisé avec ngModel, car cela peut entraîner un comportement inattendu."ngModel
etngChecked
ne sont pas destinés à être utilisés ensemble. Voir AngularJS: ng-model engagent pas la responsabilité de ng-coché des cases à cocher.OriginalL'auteur Playnox
C'est parce que ng-changement nécessite ngModel d'être présent.
Espère que cette aide. Cheers!
OriginalL'auteur jleljedal
La
ng-change
directive exige que lang-model
directive être présent.De la documentation:
La
ng-model
etng-checked
directives ne doivent pas être utilisés ensembleDe la documentation:
Plutôt choisir la valeur initiale de l'automate.
Pour plus d'informations, voir
input[radio]
de la Directive de Référence de l'APIOriginalL'auteur georgeawg