Dans AngularJs, la directive ng-enabled
n’est pas fournie. Y a-t-il une raison valable de ne pas fournir cette directive dans le cadre, car nous avons à la fois ng-show
et ng-hide
lorsque vous pouvez simplement utiliser ng-hide
pour atteindre notre objective.
Ce ne serait pas bien juste de vérifier ng-enabled="atsortingbute.value === true"
au lieu de ng-disabled="!(atsortingbute.value === true)"
cela augmentera la lisibilité du code.
La raison pour laquelle il n’y a pas de directive ngEnabled
dans Angular est plutôt sémantique – il n’y a simplement rien qui lui corresponde dans la spécification HTML. Dans le même temps, il existe déjà ngDisabled
directive ngDisabled
qui fonctionne avec disabled
atsortingbut disabled
. Pour la même raison, il n’y a pas de directive ngUnchecked
, car il existe déjà ngChecked
qui définit / supprime l’atsortingbut checked
.
Maintenant, la question raisonnable: pourquoi avons-nous à la fois ngShow
et ngHide
alors? Je suppose que c’est juste pour plus de commodité, car avoir ngShow
et ngHide
n’est pas plus déroutant que ngShow
seul, mais en même temps, il est très pratique d’avoir les deux.
Je ne manque pas du tout d’une directive sur les ng et je pense que cela ne ferait que renforcer le cadre.
Les entrées sont activées par défaut et les entrées HTML n’ont pas non plus d’atsortingbut activé, juste un désactivé. La directive angular définit l’atsortingbut HTML disabled, mais après avoir évalué une expression.
Vous pouvez simplement écrire
ng-disabled = “! atsortingbute.value”
Je pense que c’est assez lisible.
Angular définit l’atsortingbut désactivé en fonction du résultat de l’expression dans ng-disabled. Il n’y a pas d’atsortingbut activé dans HTML5, alors ng-Enabled ne fonctionnerait pas.
L’équipe principale a exprimé son opinion dans ce commentaire: https://github.com/angular/angular.js/issues/1252#issuecomment-49261373
Ils ne respecteront pas une demande de fonctionnalité simplement parce qu’elle contient beaucoup de + 1-s afin de ne pas gâcher le kernel.
Cependant, si vous voulez toujours avoir des fonctionnalités compatibles ng, btford a créé ce petit module pratique pour vous: https://github.com/btford/angular-enabled
Non pas que ce soit une réponse à la question de pourquoi, mais pour ceux qui veulent écrire leur propre directive, vous y êtes. BTW c’est dans coffeescript .
.directive 'ngEnabled', [ '$parse' ($parse)-> dir = ressortingct: 'AC' link: ($scope, elem, attrs)-> getter = $parse attrs.ngEnabled $off = $scope.$watch -> getter $scope , (val)-> elem.attr 'disabled', !val $scope.$on '$destroy', -> $off() ]
Cela a bien fonctionné pour moi. Essaye ça .
ng-disabled="!(atsortingbute.value)"