Skip to content

Commit a61d4ee

Browse files
committed
在JsonEditor中注册JsonView组件
支持组件局部注册、动态(异步)导入组件 删除Array.prototype.rmIndex,直接使用splice 解决JsonView和ArrayView的循环依赖
1 parent 5d90127 commit a61d4ee

File tree

7 files changed

+49
-28
lines changed

7 files changed

+49
-28
lines changed

dist/vue-json-edit.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example/dist/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,5 @@
5353
<body>
5454
<div id="app"></div>
5555
<!-- built files will be auto injected -->
56-
<script type="text/javascript" src="main_f45493d742150e6923c6.js"></script></body>
56+
<script type="text/javascript" src="main_e553d33721a8c3461999.js"></script></body>
5757
</html>

example/dist/main_f45493d742150e6923c6.js renamed to example/dist/main_e553d33721a8c3461999.js

Lines changed: 36 additions & 16 deletions
Large diffs are not rendered by default.

src/ArrayView.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,12 @@ export default {
111111
}
112112
},
113113
components: {
114-
"item-add-form": ItemAddForm
114+
"item-add-form": ItemAddForm,
115+
"json-view": () => import("./JsonView.vue")
115116
},
116117
methods: {
117118
delItem: function(parentDom, item, index) {
118-
this.flowData = this.flowData.rmIndex(index);
119+
this.flowData.splice(index, 1);
119120
if (this.hideMyItem[index]) this.hideMyItem[index] = false;
120121
this.$emit("input", this.flowData);
121122
},

src/JsonEditor.vue

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
</template>
66

77
<script>
8+
import JsonView from "./JsonView.vue";
9+
810
export default {
911
name: "JsonEditor",
1012
props: {
@@ -54,6 +56,9 @@ export default {
5456
deep: true
5557
}
5658
},
59+
components: {
60+
"json-view": JsonView
61+
},
5762
methods: {
5863
jsonParse: function (jsonStr) {
5964
let parseJson = json => {
@@ -63,8 +68,6 @@ export default {
6368
let val = json[k];
6469
let parsedVal = val;
6570
66-
console.log('k', val)
67-
6871
if (this.getType(val) == "object") {
6972
parsedVal = parseJson(val);
7073

src/JsonView.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,12 @@ export default {
110110
}
111111
},
112112
components: {
113-
"item-add-form": ItemAddForm
113+
"item-add-form": ItemAddForm,
114+
"array-view": () => import("./ArrayView.vue")
114115
},
115116
methods: {
116117
delItem: function(parentDom, item, index) {
117-
this.flowData = this.flowData.rmIndex(index);
118+
this.flowData.splice(index, 1);
118119
if (this.hideMyBlock[index]) this.hideMyBlock[index] = false;
119120
this.$emit("input", this.flowData);
120121
},

src/index.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@ const install = (Vue) => {
1212
Vue.component('json-view', JsonView)
1313
Vue.component('array-view', ArrayView)
1414

15-
Array.prototype.rmIndex = function (index) {
16-
this.splice(index, 1)
17-
return this
18-
}
1915
}
2016

2117
export default install

0 commit comments

Comments
 (0)