Tengo un objeto JS declarado así
$scope.items = {};
También tengo una solicitud $ http que llena este objeto con elementos. Me gustaría detectar si este elemento está vacío, parece que ng-show admite esto ...
ng-show="items"
y mágicamente funciona, también me gustaría hacer lo mismo desde un controlador, pero parece que no puedo hacer que funcione, parece que tengo que iterar sobre el objeto para ver si tiene alguna propiedad o usar lodash o subrayado .
¿Existe alguna alternativa?
lo intenté
alert($scope.items == true);
pero siempre devuelve falso, cuando se crea el objeto y cuando se llena con $http
, por lo que no funciona de esa manera.
angularjs
angularjs-scope
Martín
fuente
fuente
Respuestas:
El uso de un objeto literal vacío no es necesario aquí, puede usar nulo o indefinido:
De esta manera,
ng-show
debería seguir funcionando, y en su controlador solo puede hacer:Y en sus
$http
devoluciones de llamada, hace lo siguiente:fuente
$scope.items = {available: false}
, yng-show="items.available"
, y en su controlador simplemente verifiqueif (items.available) {...}
.O puede hacerlo simple haciendo algo como esto:
fuente
({} === $scope.items)
En un proyecto privado a escribió este filtro
uso:
pruebas:
Saludos.
fuente
otra simple frase:
fuente
Si no puede tener los elementos OBJ igual a nulo, puede hacer esto:
y en la vista puedes hacer:
Tu puedes hacer
Solo si su navegador es compatible con ECMAScript 5. Por ejemplo, IE 8 no es compatible con esta función.
Consulte http://kangax.github.io/compat-table/es5/ para obtener más información
fuente
una versión más limpia de esto podría ser:
donde el resultado será indefinido si no se establece ninguna propiedad de objeto.
fuente
O, si usa lo-dash: _.empty (valor).
"Comprueba si el valor está vacío. Las matrices, cadenas o argumentos, objetos con una longitud de 0 y objetos sin propiedades enumerables propias se consideran" vacíos "."
fuente
Comprobar objeto vacío
fuente
puedes comprobar la longitud de los artículos
fuente
items
es un objeto y los objetos no tienen.length
propiedad (generalmente) - las matrices las tienen