Eu tenho um objeto JS declarado assim
$scope.items = {};
Eu também tenho uma solicitação $ http que preenche este objeto com itens. Gostaria de detectar se este item está vazio, parece que o ng-show suporta isso ... Eu entro
ng-show="items"
e magicamente funciona, eu também gostaria de fazer o mesmo em um controlador, mas não consigo fazê-lo funcionar, parece que posso ter que iterar sobre o objeto para ver se ele tem alguma propriedade ou usar lodash ou sublinhado .
Existe uma alternativa?
Eu tentei
alert($scope.items == true);
mas sempre retorna falso, quando o objeto é criado e quando preenchido com $http
, então não está funcionando dessa forma.
angularjs
angularjs-scope
Martin
fonte
fonte
Respostas:
Usar um literal de objeto vazio não é necessário aqui, você pode usar nulo ou indefinido:
Desta forma,
ng-show
deve continuar funcionando, e em seu controlador você pode apenas fazer:E em seus
$http
retornos de chamada, você faz o seguinte:fonte
$scope.items = {available: false}
, eng-show="items.available"
, e em seu controlador apenas verifiqueif (items.available) {...}
.Ou você pode mantê-lo simples fazendo algo assim:
fonte
({} === $scope.items)
Em um projeto privado, escrevi este filtro
uso:
testando:
Saudações.
fonte
outra linha simples:
fonte
Se você não pudesse ter os itens OBJ iguais a nulos, você pode fazer isso:
e na visualização você pode fazer:
Você pode fazer
Somente se o seu navegador suportar ECMAScript 5. Por exemplo, o IE 8 não oferece suporte a esse recurso.
Veja http://kangax.github.io/compat-table/es5/ para mais informações
fonte
uma versão mais limpa disso pode ser:
onde o resultado será indefinido se nenhuma propriedade do objeto for definida.
fonte
Ou, se estiver usando lo-traço: _.empty (valor).
"Verifica se o valor está vazio. Objetos de vetores, strings ou argumentos com comprimento 0 e objetos sem propriedades enumeráveis próprias são considerados" vazios "."
fonte
Verificar objeto vazio
fonte
você pode verificar o comprimento dos itens
fonte
items
é um objeto e os objetos não têm.length
propriedade (normalmente) - os arrays os têm