dynamiquement ajouter un élément à la angularjs ng-repeat

J'ai une directive qui génère un glisser/déposer réorganisables liste avec ajouter et supprimer des fonctionnalités. Si vous cliquez sur dans le récipient, une entrée est ajoutée dynamiquement, vous tapez et quand vous tapez une virgule, la valeur que vous avez tapé est poussé dans la liste utilisée avec ng-repeat pour créer la liste. (Doit être un peu familier pour les utilisateurs de ce site 🙂 )

Cela fonctionne impressionnant lorsque l'objet initial de la sauvegarde, il n'est pas null. Mais quand l'objet commence null et que vous essayez d'ajouter le premier élément (par la détection de la valeur null et la portée.$appliquer l'initialisation)le balisage n'est pas généré.

Ici est un plunk pour montrer ce que je veux dire.
http://plnkr.co/edit/Momlgpfy82kHRPwXGR8V?p=preview

Dans mon application, les données proviennent d'une source externe, donc je ne peux pas garantir la non-null listes. Comment puis-je obtenir angulaire de répondre correctement à l'initialisation de tableau (et plus tard push)?

  • Pourquoi ne pouvez-vous pas mis la liste initiale de [] au lieu de null?
  • oui, j'ai effectivement déjà...s'est avéré être un bug dans la façon dont la directive a été accéder à la liste...j'ai vraiment besoin de eval("scope." + attrs.draggableList) instead of champ d'application[attrs.draggableList]
  • Vous ne voulez certainement pas à utiliser eval que ce n'est pas sûr. Essayez scope.$eval(attrs.draggableList) à la place: docs.angularjs.org/api/ng.$rootScope.Portée. Mais gardez à l'esprit que ce n'est pas une liaison bidirectionnelle et il ne sera pas mise à jour si vous modifiez la liste à l'extérieur de la directive. Votre directive devrait utiliser $observe et un isolat de la portée.
  • Merci pour la suggestion, j'ai fait l'eval de changement comme vous l'avez suggéré, et il fonctionne pour ce que j'ai besoin qu'il ne devrait pas y avoir de changements externes à la liste.
InformationsquelleAutor | 2013-04-08