validar reactivos ngshow formularios formulario ejemplos javascript angularjs

javascript - reactivos - En angularjs tenemos una directiva ng-disabled, ¿por qué el marco no proporciona la directiva ng-enabled ya que tenemos ng-show y ng-hide?



validar formulario angular 5 (6)

En AngularJs no se proporciona la directiva ng-enabled . ¿Hay alguna razón adecuada para no proporcionar esa directiva en el marco, porque tenemos tanto ng-show como ng-hide cuando puedes usar ng-hide para lograr nuestro objetivo?

No sería bueno verificar ng-enabled="attribute.value === true"

en lugar de ng-disabled="!(attribute.value === true)"

aumentará la legibilidad del código.



Angular establece el atributo desactivado en función del resultado de la expresión en ng-disabled. No hay un atributo habilitado en HTML5, por lo que ng-Enabled no funcionaría.


Esta línea funcionó para mí.

ng-disabled="!attribute.value"


La razón por la que no hay ngEnabled directiva ngEnabled en Angular es bastante semántica: simplemente no hay nada que le corresponda en la especificación HTML. Al mismo tiempo, ya ngDisabled directiva ngDisabled que funciona con el atributo disabled . Por la misma razón, no existe una directiva ngUnchecked , porque ya hay ngChecked que establece / elimina el atributo checked .

Ahora, la pregunta razonable: ¿por qué tenemos ngShow y ngHide entonces? Bueno, es solo por conveniencia en este caso, supongo, porque tener tanto ngShow como ngHide no es más confuso que ngShow solo, pero al mismo tiempo es muy útil tener ambos.


No es que esta sea una respuesta a la pregunta de por qué, sino para aquellos que quieren escribir su propia directiva, aquí está. Por cierto, está en coffeescript .

.directive ''ngEnabled'', [ ''$parse'' ($parse)-> dir = restrict: ''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


No me falta ninguna directiva habilitada para ng y creo que agregaría poco o nada al marco.

Las entradas están habilitadas por defecto y las entradas HTML tampoco tienen un atributo habilitado, solo un deshabilitado. La directiva angular establece el atributo HTML deshabilitado, pero después de evaluar una expresión.

Solo puedes escribir

ng-disabled = "! attribute.value"

Creo que es bastante legible.