Tester si un objet est un objet vide dans un modèle AngularJS
J'ai un simple objet dans un contrôleur, qui peut parfois être vide ({}
).
app.controller('TestController', function() {
var vm = this;
vm.testObject = {};
});
Je veux masquer ou afficher certains DOM-éléments dans le modèle correspondant lorsque l'objet est vide ou pas.
J'ai essayé de le faire avec un simple <div ng-if="vm.testObject">
mais quand vm.testObject === {}
il est considéré comme true
dans le ng-if
.
<div ng-controller="TestController as vm">
<div ng-if="vm.testObject">
Test Object is not empty
</div>
<div ng-if="!vm.testObject">
Test Object is empty
</div>
</div>
Est-il une manière simple de vérifier pour un objet vide dans le modèle? De préférence sans ajouter de nouvelles variables à la portée.
Ici est un travail Plunker:
http://plnkr.co/edit/Qed2MKmuedcktGGqUNi0?p=preview
- Comment sur une fonction, par exemple,
vm.isEmpty = function(obj) { return Object.keys(obj).length === 0; }
. Ensuite, vous pouvez utiliserng-if="vm.isEmpty(vm.testObject)"
Vous devez vous connecter pour publier un commentaire.
Êtes-vous ok avec le déplacement du contrôle d'égalité à la
ng-if
?Contraire, de fournir une aide sur le champ d'application
puis
{} === {}
donne de faux.Vous devez utiliser un AngularJs filtre:
Javascript:
Modèle Html:
Mis à jour plunkr: http://plnkr.co/edit/J6H8VzUKnsNv1vSsRLfB?p=preview
return !angular.equals({}, object);
C'est un vieux thread mais je trouve plus facile de vérifier si l'Objet possède des touches.
C'est simple et lisible.
Cela fonctionne. vérifiez la Longueur