J'ai une application AngularJS, qui collecte des données à partir de l'entrée, transforme un modèle en une chaîne en utilisant JSON.stringify()
et permet à un utilisateur de modifier ce modèle de telle manière que les champs d'entrée soient mis à jour si l' <textarea>
élément est mis à jour et vice versa. Une sorte de liaison bidirectionnelle :)
Le problème est que la chaîne elle-même a l'air moche et je voudrais la formater pour qu'elle ressemble à ceci:
Et pas comme ça maintenant:
Des idées comment cela peut être accompli? Si vous avez besoin d'informations supplémentaires, n'hésitez pas à demander. Chaque réponse est très appréciée et répond immédiatement.
Je vous remercie.
PS Je suppose que cela devrait être une sorte de directive ou un filtre personnalisé. Les données elles-mêmes NE DEVRAIENT PAS être modifiées, seulement la sortie.
la source
$watch
(basé sur la réponse à la question précédente) sur le modèle textarea, pouvez-vous faire unconsole.log()
et voir quelle valeur vous obtenez dans la chaîne pour la clé d'entrée - je pense que c'est "/ n"Réponses:
Vous pouvez utiliser un paramètre facultatif de
JSON.stringify()
Par exemple:
vous donnera le résultat suivant:
la source
$$hashKey
propriété angulaire utilise pour le suivi du modèle interneJSON.stringify(object, null, 2)
où 2 est le nombre de caractères d'espace blanc.Angular a un intégré
filter
pour montrerJSON
Notez l'utilisation du
pre
-tag pour conserver les espaces et les sauts de ligneDémo:
Il y a aussi une
angular.toJson
méthode, mais je n'ai pas joué avec ça ( Docs )la source
<pre>
balise ne doit pas avoir lawhite-space
propriété définie surnormal
ouno-wrap
. Sinon, votre JSON ne serait pas mis en retrait comme vous le souhaitez.Si vous cherchez à rendre JSON au format HTML et qu'il peut être réduit / ouvert, vous pouvez utiliser cette directive que je viens de créer pour le rendre joliment:
https://github.com/mohsen1/json-formatter/
la source
En plus du filtre angulaire
json
déjà mentionné, il y a aussi la fonction angulairetoJson()
.Le deuxième paramètre de cette fonction vous permet d'activer la jolie impression et de définir le nombre d'espaces à utiliser.
la source
Je suppose que vous voulez utiliser pour éditer le texte json. Ensuite, vous pouvez utiliser la manière d'ivarni:
et ajoutez un attribut supplémentaire pour faireJ'espère que cela peut vous aider.
la source
Si vous souhaitez formater le JSON et également mettre en évidence la syntaxe, vous pouvez utiliser la
ng-prettyjson
directive. Voir le package npm.Voici comment l'utiliser:
<pre pretty-json="jsonObject"></pre>
la source