Y at-il un moyen de mettre une condition dans un ng-click? Ici, je veux que le formulaire ne soit pas soumis s'il y a des erreurs de formulaire, mais j'ai une exception d'analyse.
<input ng-click="{{if(profileForm.$valid) updateMyProfile()}}" name="submit" id="submit" value="Save" class="submit" type="submit">
J'ai essayé d'utiliser ng-disabled mais mon plugin de validation ne fonctionne pas car le formulaire n'est jamais soumis, il n'est donc pas déclenché.
Modèle:
<input ng-click="check(profileForm.$valid)" name="submit"
id="submit" value="Save" class="submit" type="submit">
Manette:
$scope.check = function(value) {
if (value) {
updateMyProfile();
}
}
Ceci est peut-être inutile et inutile, mais comme il s'agit de javascript, vous n'avez pas à utiliser le ternaire comme suggéré ci-dessus dans l'instruction ng-click. Vous devriez également pouvoir utiliser la syntaxe paresseuse d'évaluation ("ou die"). Donc, pour votre exemple ci-dessus:
<input ng-click="{{if(profileForm.$valid) updateMyProfile()}}" name="submit" id="submit" value="Save" class="submit" type="submit">
deviendrait:
<input ng-click="profileForm.$valid && updateMyProfile()" name="submit" id="submit" value="Save" class="submit" type="submit">
Dans ce cas, si le profil n'est pas valide, rien ne se passe, sinon updateMyProfile () est appelé. Comme dans le lien fourni par @falinsky ci-dessus.
Voici un hack que j'ai découvert qui pourrait fonctionner pour vous, même si ce n'est pas joli et personnellement, je serais gêné d'utiliser une telle ligne de code:
ng-click="profileForm.$valid ? updateMyProfile() : alert('failed')"
Maintenant, vous devez penser 'mais je ne veux pas que cela alerte ("échec") si ma profileForm
n'est pas valide. Eh bien c'est la partie laide. Pour moi, peu importe ce que je mets dans la clause else de cette déclaration ternaire, elle n'est jamais exécutée.
Pourtant, si elle est supprimée, une erreur est générée. Donc, vous pouvez simplement le farcir avec une alerte inutile.
Je t'ai dit que c'était moche ... mais je ne reçois même pas d'erreurs quand je fais quelque chose comme ça.
La manière appropriée de faire ceci est comme l'a mentionné Chen-Tsu, mais à chacun leur propre.
Si vous devez le faire de cette façon, voici quelques façons de le faire:
De loin la solution la plus simple.
<input ng-disabled="!profileForm.$valid" ng-click="updateMyProfile()" ... >
Peut-être que si vous affichez/cachez un balisage complexe.
<div ng-if="profileForm.$valid">
<input ng-click="updateMyProfile()" ... >
</div>
<div ng-if="!profileForm.$valid">
Sorry! We need all form fields properly filled out to continue.
</div>
(rappelez-vous, il n'y a pas de ng-else
...)
Communiquer à l'utilisateur où se trouve le bouton (il ne le cherchera plus), mais expliquez pourquoi il est impossible de cliquer dessus.
<input ng-disabled="!profileForm.$valid" ng-click="updateMyProfile()" ... >
<div ng-if="!profileForm.$valid">
Sorry! We need all form fields properly filled out to continue.
</div>
Nous pouvons ajouter un événement ng-click de manière conditionnelle sans utiliser de classe désactivée.
HTML:
<input ng-click="profileForm.$valid && updateMyProfile()" name="submit" id="submit" value="Save" class="submit" type="submit">
De http://php.quicoto.com/inline-ifelse-statement-ngclick-angularjs/ , voici comment vous le faites, si vous devez réellement:
ng-click="variable = (condition=='X' ? 'Y' : 'X')"
Ecrire comme
<input type="submit" ng-click="profileForm.$valid==true?updateMyProfile():''" name="submit" value="Save" class="submit" id="submit">
Vous pouvez mettre des conditions à l'intérieur des balises. Essayer:
ng-class="{true:'active',false:'disable'}[list_status=='show']"