Use json pretty print in angularjs

后端 未结 4 1469
梦如初夏
梦如初夏 2021-01-30 10:32

How can I use this json pretty print [ http://jsfiddle.net/KJQ9K/ ] with angularJS?

Lets assume myJsonValue is

{a:1, \'b\':\'foo\', c:[false,\'false\',n         


        
相关标签:
4条回答
  • 2021-01-30 10:44

    You have a few options. What I consider the most "AngularJS" way is to wrap your custom object into an Angular service:

    myAngularModule.service('myPrettyPrintService', ,myObject );
    

    The inject that into a controller:

    myAngularModule.controller('myTestController', function(myPrettyPrintService){}
    

    Then inside the controller, reference the functions and sort:

    myPrettyPrintService.syntaxHighlight();
    

    Since anything defined in JavaScript, is global anyway you could technically just access it inside a controller:

    syntaxHighlight();
    

    That may screw up with unit testingt because it adds a external, undefined, dependency to your controller.

    0 讨论(0)
  • 2021-01-30 10:45

    Angular already has the json filter built-in:

    <pre>
      {{data | json}}
    </pre>
    

    The json after the pipe | is an Angular Filter. You can make your own custom filter if you like:

    app.filter('prettyJSON', function () {
        function prettyPrintJson(json) {
          return JSON ? JSON.stringify(json, null, '  ') : 'your browser doesnt support JSON so cant pretty print';
        }
        return prettyPrintJson;
    });
    

    To use your custom prettyJSON filter:

      <pre>
        {{data | prettyJSON}}
      </pre>
    

    ES6 version from @TeChn4K:

    app.filter("prettyJSON", () => json => JSON.stringify(json, null, " "))
    
    0 讨论(0)
  • 2021-01-30 10:58

    A simpler code:

    app.filter('prettyJSON', function () {
        return function(json) { return angular.toJson(json, true); }
    });
    

    Remember to use the <pre> tag

    0 讨论(0)
  • 2021-01-30 10:59

    Another option is to turn the function into a filter...

    app.filter('prettify', function () {
    
        function syntaxHighlight(json) {
            // ...
        }
    
        return syntaxHighlight;
    });
    

    HTML...

    <pre ng-bind-html="json | prettify"></pre>
    

    JsFiddle: http://jsfiddle.net/KSTe8/

    0 讨论(0)
提交回复
热议问题