我如何在angularJS中使用这个json pretty print [ http://jsfiddle.net/KJQ9K/ ]?
让我们假设myJsonValue是
{a:1, 'b':'foo', c:[false,'false',null, 'null', {d:{e:1.3e5,f:'1.3e5'}}]}
Run Code Online (Sandbox Code Playgroud)
我希望能够使用下面的渲染预(如示例所示)
Mic*_*ole 117
Angular已经内置了json过滤器:
<pre>
{{data | json}}
</pre>
Run Code Online (Sandbox Code Playgroud)
该json管道之后|是角度滤波器.如果您愿意,可以制作自己的自定义过滤器:
app.filter('prettyJSON', function () {
function prettyPrintJson(json) {
return JSON ? JSON.stringify(json, null, ' ') : 'your browser doesnt support JSON so cant pretty print';
}
return prettyPrintJson;
});
Run Code Online (Sandbox Code Playgroud)
要使用自定义prettyJSON过滤器:
<pre>
{{data | prettyJSON}}
</pre>
Run Code Online (Sandbox Code Playgroud)
来自@TeChn4K的ES6版本:
app.filter("prettyJSON", () => json => JSON.stringify(json, null, " "))
Run Code Online (Sandbox Code Playgroud)
Ant*_*Chu 17
另一个选择是将功能转换为过滤器...
app.filter('prettify', function () {
function syntaxHighlight(json) {
// ...
}
return syntaxHighlight;
});
Run Code Online (Sandbox Code Playgroud)
HTML ...
<pre ng-bind-html="json | prettify"></pre>
Run Code Online (Sandbox Code Playgroud)
JsFiddle:http://jsfiddle.net/KSTe8/
一个更简单的代码:
app.filter('prettyJSON', function () {
return function(json) { return angular.toJson(json, true); }
});
Run Code Online (Sandbox Code Playgroud)
记得使用<pre>标签
你有几个选择。我认为最“AngularJS”的方法是将自定义对象包装到 Angular 服务中:
myAngularModule.service('myPrettyPrintService', ,myObject );
Run Code Online (Sandbox Code Playgroud)
将其注入控制器:
myAngularModule.controller('myTestController', function(myPrettyPrintService){}
Run Code Online (Sandbox Code Playgroud)
然后在控制器内部,引用函数并排序:
myPrettyPrintService.syntaxHighlight();
Run Code Online (Sandbox Code Playgroud)
由于 JavaScript 中定义的任何内容都是全局的,从技术上讲,您可以在控制器内访问它:
syntaxHighlight();
Run Code Online (Sandbox Code Playgroud)
这可能会搞砸单元测试,因为它向控制器添加了外部的、未定义的依赖项。
| 归档时间: |
|
| 查看次数: |
61198 次 |
| 最近记录: |