una que personalizadas directivas directiva crear angularjs angularjs-ng-show

que - directivas personalizadas angularjs



¿Cómo verificar si una variable de alcance no está definida en la plantilla AngularJS? (9)

¿Cómo verificar si una variable de alcance no está definida ?

Esto no funciona:

<p ng-show="foo == undefined">Show this if $scope.foo == undefined</p>


Aquí está la forma más limpia de hacer esto:

<p ng-show="{{foo === undefined}}">Show this if $scope.foo === undefined</p>

¡No es necesario crear una función auxiliar en el controlador!


Como escribió @impulsgraw. Debe verificar si no está definido después de las tuberías:

<div ng-show="foo || undefined"> Show this if foo is defined! </div> <div ng-show="boo || !undefined"> Show this if boo is undefined! </div>

https://jsfiddle.net/mjfz2q9h/11/


Corregido:

HTML

<p ng-show="getFooUndef(foo)">Show this if $scope.foo === undefined</p>

JS

$scope.foo = undefined; $scope.getFooUndef = function(foo){ return ( typeof foo === ''undefined'' ); }

Violín: http://jsfiddle.net/oakley349/vtcff0w5/1/


Publicar una nueva respuesta ya que el comportamiento angular ha cambiado. Comprobar la igualdad con indefinido ahora funciona en expresiones angulares, al menos a partir de 1.5, como funciona el siguiente código:

ng-if="foo !== undefined"

Cuando este ng-if se evalúa como verdadero, eliminar la propiedad de porcentajes del alcance apropiado y llamar a $ digest elimina el elemento del documento, como era de esperar.


Puede usar la operación de doble tubería para verificar si el valor no está definido en la instrucción after:

<div ng-show="foo || false"> Show this if foo is defined! </div> <div ng-show="boo || true"> Show this if boo is undefined! </div>

Verifique JSFiddle para la demostración

Para obtener una explicación técnica de la tubería doble, prefiero consultar este enlace: https://.com/a/34707750/6225126


Si foo no es una variable booleana , esto funcionaría (es decir, desea mostrar esto cuando esa variable tenga algunos datos):

<p ng-show="!foo">Show this if $scope.foo is undefined</p>

Y viceversa:

<p ng-show="foo">Show this if $scope.foo is defined</p>



Usar undefined para tomar una decisión suele ser un signo de mal diseño en Javascript. Podría considerar hacer otra cosa.

Sin embargo, para responder a su pregunta: creo que la mejor manera de hacerlo sería agregar una función auxiliar.

$scope.isUndefined = function (thing) { return (typeof thing === "undefined"); }

y en la plantilla

<div ng-show="isUndefined(foo)"></div>


<p ng-show="angular.isUndefined(foo)">Show this if $scope.foo === undefined</p>