Dans angularjs, nous avons la directive ng-disabled, pourquoi la directive ng-enabled n’est pas fournie par le framework car nous avons ng-show et ng-hide

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.

TLDR: utilisez plutôt l’option angular .

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() ] 

http://plnkr.co/edit/F4RG2v859oFtTumvgoGN?p=preview

Cela a bien fonctionné pour moi. Essaye ça .

  ng-disabled="!(atsortingbute.value)"