赞
踩
使用npm:
$ npm install vue-json-viewer@2 --save
// Vue2
$ npm install vue-json-viewer@3 --save
// Vue3
使用yarm:
$ yarn add vue-json-viewer@2
// Vue2
$ yarn add vue-json-viewer@3
// Vue3
使用pnpm也可以
在main.ts中注册插件
import { createApp } from 'vue';
import JsonViewer from 'vue-json-viewer'
import App from './App.vue';
const app = createApp(App);
app.use(JsonViewer )
app.mount('#app');
在界面中使用
<template> <json-viewer :value="data" :expand-depth="5" copyable boxed sort class="w-100%"></json-viewer> </template> <script setup lang="ts"> const data = {// 注意:绑定得数据一定是JSON,而不是JSON字符串 total: 25, limit: 10, data: [ { id: '5968fcad629fa84ab65a5247', firstname: 'Ada', lastname: 'Lovelace', }, ], }; </script>
注意:在main.ts文件中可能会出现以下得ts类型报错:
无法找到模块“vue-json-viewer”的声明文件。
解决方法:
npm i --save-dev @types/vue-json-viewer
.d.ts
结尾的文件中添加上declare module 'vue-json-viewer'
实现:给表格中每行数据单独添加一个变量,用于单独控制展示的方式。
//获取到表格数据后,添加一个自定义变量,记录json显示的方式
state.tableData.forEach((item) => {
item.showJsonView = false;
});
<!--el-table-column 插槽中 --> <template #default="scope"> <div v-if="col.key === 'accountConfig'"> <el-link type="primary" :underline="false" @click="() => (scope.row.showJsonView = !scope.row.showJsonView)"> {{ scope.row.showJsonView ? '原始数据' : '格式化数据' }} </el-link> <div v-if="scope.row.showJsonView"> <json-viewer :value="JSON.parse(scope.row[col.key])" :expand-depth="1" copyable></json-viewer> </div> <div v-else> <pre class="text-pre-wrap">{{ scope.row[col.key] }}</pre> </div> </div> <div v-else> {{ scope.row[col.key] }} </div> </template>
注:如果表格中有el-switch
, 单独控制每行的操作,请求时显示的loading
,也是同样的方法实现。
theme="my-awesome-json-theme"
到JsonViewer的组件属性上// values are default one from jv-light template .my-awesome-json-theme { background: #fff; white-space: nowrap; color: #525252; font-size: 14px; font-family: Consolas, Menlo, Courier, monospace; .jv-ellipsis { color: #999; background-color: #eee; display: inline-block; line-height: 0.9; font-size: 0.9em; padding: 0px 4px 2px 4px; border-radius: 3px; vertical-align: 2px; cursor: pointer; user-select: none; } .jv-button { color: #49b3ff } .jv-key { color: #111111 } .jv-item { &.jv-array { color: #111111 } &.jv-boolean { color: #fc1e70 } &.jv-function { color: #067bca } &.jv-number { color: #fc1e70 } &.jv-number-float { color: #fc1e70 } &.jv-number-integer { color: #fc1e70 } &.jv-object { color: #111111 } &.jv-undefined { color: #e08331 } &.jv-string { color: #42b983; word-break: break-word; white-space: normal; } } .jv-code { .jv-toggle { &:before { padding: 0px 2px; border-radius: 2px; } &:hover { &:before { background: #eee; } } } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。