Vérifiez la taille de l'objet dans le modèle AngularJS, en vous trompant?
Je veux parcourir myObject
dans un AngularJS modèle
Cela ne fonctionne pas :
<ul ng-if="Object.keys(myObject).length">
<li ng-repeat="(key, val) in myObject">
Value at key {{ key }} is: {{ val }}
</li>
</ul>
Rien ne s'affiche, je soupçonne en raison $scope.Object
n'est pas défini.
Au lieu de cela, j'ai fait ceci :
Dans le contrôleur/directive :
$scope.sizeOf = function(obj) {
return Object.keys(obj).length;
};
Dans le modèle :
<ul ng-if="sizeOf(myObject)">
<li ng-repeat="(key, val) in myObject">
Value at key {{ key }} is: {{ val }}
</li>
</ul>
Je n'aime pas cette solution en raison de la duplication de cette fonction dans chaque contrôleur ou de la directive $scope
.
Voyez-vous une solution plus propre?
Merci !
source d'informationauteur Pandaiolo | 2014-03-27
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
Object
dansngIf
directive partout. Vient de mettre sa référence à la racine de la portée:Il sera également disponible en isolé étendues comme dans les directives.
UPD. Au cours des dernières version de Anguleuses vous ne pouvez pas faire référence
Object
dans des expressions plus. Dans ce cas, vous aurez besoin de faire référence à des méthodes individuellement:et ensuite utiliser cette fonction:
Dans votre contrôleur, ajoutez cette ligne
Alors vous devriez être en mesure d'utiliser l'Objet.XXX dans votre modèle comme ce que vous avez fait.
Ne devrait-ce pas suffisant?
La directive prend soin de null, undefined, des objets vides. Plunkr pour la démo. Essayer de modifier l'objet indéfini, null ou remplir avec la valeur.