Mam aplikację AngularJS, która zbiera dane z danych wejściowych, przekształca model w ciąg przy użyciu JSON.stringify()
i pozwala użytkownikowi edytować ten model w taki sposób, że pola wejściowe są aktualizowane, jeśli <textarea>
element jest aktualizowany i odwrotnie. Jakieś wiązanie dwukierunkowe :)
Problem w tym, że sam String wygląda brzydko i chciałbym go sformatować tak, aby wyglądał tak:
I nie tak, jak teraz wygląda:
Jakieś pomysły, jak można to osiągnąć? Jeśli potrzebujesz dodatkowych informacji - nie wahaj się zapytać. Każda odpowiedź jest wysoko ceniona i udzielana natychmiast.
Dziękuję Ci.
PS Myślę, że to powinna być jakaś dyrektywa lub niestandardowy filtr. Same dane NIE POWINNY być zmieniane, tylko dane wyjściowe.
javascript
json
string
angularjs
formatting
amenoire
źródło
źródło
$watch
(w oparciu o odpowiedź na poprzednie pytanie) w modelu textarea, czy możesz zrobić aconsole.log()
i zobaczyć, jaką wartość uzyskasz w ciągu dla klawisza enter - myślę, że to "/ n"Odpowiedzi:
Możesz użyć opcjonalnego parametru
JSON.stringify()
Na przykład:
JSON.stringify({a:1,b:2,c:{d:3, e:4}},null," ")
da następujący wynik:
"{ "a": 1, "b": 2, "c": { "d": 3, "e": 4 } }"
źródło
$$hashKey
właściwość, której kąt używa do śledzenia modelu wewnętrznegoJSON.stringify(object, null, 2)
gdzie 2 to liczba białych znaków.Angular ma wbudowaną funkcję
filter
wyświetlaniaJSON
Zwróć uwagę na użycie
pre
-tag, aby zachować odstępy i podziały wierszyPróbny:
angular.module('app', []) .controller('Ctrl', ['$scope', function($scope) { $scope.data = { a: 1, b: 2, c: { d: "3" }, }; } ]);
<!DOCTYPE html> <html ng-app="app"> <head> <script data-require="[email protected]" data-semver="1.2.15" src="//code.angularjs.org/1.2.15/angular.js"></script> </head> <body ng-controller="Ctrl"> <pre>{{data | json}}</pre> </body> </html>
Jest też
angular.toJson
metoda, ale nie bawiłem się nią ( Dokumenty )źródło
<pre>
tag nie powinien miećwhite-space
właściwości ustawionej nanormal
lubno-wrap
. W przeciwnym razie w Twoim JSON nie byłoby wcięć, jak chcesz.Jeśli chcesz renderować JSON jako HTML i można go zwinąć / otworzyć, możesz użyć tej dyrektywy, którą właśnie stworzyłem, aby ładnie go renderować:
https://github.com/mohsen1/json-formatter/
źródło
Oprócz wspomnianego już filtra kątowego
json
istnieje również funkcja kątowatoJson()
.Drugi parametr tej funkcji pozwala włączyć ładne drukowanie i ustawić liczbę spacji do wykorzystania.
źródło
Chyba chcesz użyć do edycji tekstu json. Następnie możesz użyć sposobu Ivarniego:
i dodaj atrybut adition do wykonaniaedytowalne
<pre contenteditable="true">{{data | json}}</pre>
Mam nadzieję, że to może ci pomóc.
źródło
Jeśli chcesz sformatować JSON, a także podświetlić składnię, możesz użyć
ng-prettyjson
dyrektywy. Zobacz pakiet npm.Oto jak z niego korzystać:
<pre pretty-json="jsonObject"></pre>
źródło