2 votes

Itération sur une clé JSON commençant par '$' en angular js

J'essaie d'afficher la valeur de la clé d'un objet json en le parcourant par itération. Voici mon code

    <html ng-app>
     <head>
      <script data-require="angular.js@1.6.0" data-semver="1.6.0" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular.js"></script>
      <link rel="stylesheet" href="style.css" />
      <script src="script.js"></script>
     </head>

     <body ng-init='x = {"$xy":"boost-combinations@$q,article,false,10"}'>
      <li ng-repeat="(k,v) in x">{{k}} : {{v}}</li>
       <h1>Hello Plunker!</h1>
     </body>
   </html>

Je veux juste afficher comme $xy : boost-combinations@$q,article,false,10.

0voto

Ce n'est pas possible. Tous les caractères $ et $$ sont ignorés. Si vous voyez ngRepeat.js des sources angulaires vous pouvez lire cette information.

 *`ngRepeat` will silently *ignore* object keys starting with `$`, because
 *   it's a prefix used by Angular for public (`$`) and private (`$$`) properties.

0voto

Ovidiu Dolha Points 3496

Malheureusement, Angular ignore les clés commençant par '$' par défaut.

Je pense que le moyen le plus simple de remplacer cette fonction est d'implémenter votre propre fonction qui crée un tableau à partir d'un objet et de l'itérer :

 <body ng-init='x = {"$xy":"boost-combinations@$q,article,false,10"}'>
  <li ng-repeat="item in fix(x)">{{item.k}} : {{item.v}}</li>

et dans un contrôleur

function fix(x) {
  return Object.keys(x).map(function(k) {
    return { k: k, v: x[k] };
  });
}

0voto

Amit Kumar Ghosh Points 1455

Cela a simplement fonctionné pour moi -

<div ng-init='y = [{ "$xy": "boost-combinations@$q,article,false,10" }]'>
   <div ng-repeat="(k, v) in y">
      {{v}}
   </div>
</div>

ou

<div ng-init='y = { "$xy": "boost-combinations@$q,article,false,10" }'>
   {{y}}
</div>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X