From 6ff0e3400309ec454369d92b4a2c362e5529873d Mon Sep 17 00:00:00 2001 From: 梁灏 Date: Wed, 25 Oct 2017 21:10:29 +0800 Subject: [PATCH] update Tree Render function --- examples/routers/tree.vue | 17 +++++++++-------- src/components/tree/node.vue | 5 +++-- src/components/tree/render.js | 5 +++-- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/examples/routers/tree.vue b/examples/routers/tree.vue index 2d5e4c7..727be4f 100644 --- a/examples/routers/tree.vue +++ b/examples/routers/tree.vue @@ -146,7 +146,7 @@ } }, methods: { - renderContent (h, { data, node }) { + renderContent (h, { data, node, root }) { return h('span', { style: { display: 'inline-block', @@ -169,7 +169,7 @@ marginRight: '8px' }, on: { - click: () => { this.append(node, data) } + click: () => { this.append(data) } } }), h('Button', { @@ -177,22 +177,23 @@ icon: 'ios-minus-empty' }), on: { - click: () => { this.remove(node, data) } + click: () => { this.remove(node, data, root) } } }) ]) ]); }, - append (node, data) { + append (data) { this.$set(data, 'children', [{ title: 'appended node', expand: true }]); }, - remove (node, data) { - const parent = node.parent; - console.log(node); - console.log(data); + remove (node, data, root) { + const parentKey = root.find(el => el === node).parent; + const parent = root.find(el => el.nodeKey === parentKey).node; + const index = parent.children.indexOf(data); + parent.children.splice(index, 1); } } } diff --git a/src/components/tree/node.vue b/src/components/tree/node.vue index 7a3aaf7..21e6620 100644 --- a/src/components/tree/node.vue +++ b/src/components/tree/node.vue @@ -113,9 +113,10 @@ node () { const Tree = findComponentUpward(this, 'Tree'); if (Tree) { - return Tree.flatState.find(item => item.nodeKey === this.data.nodeKey); + // 将所有的 node(即flatState)和当前 node 都传递 + return [Tree.flatState, Tree.flatState.find(item => item.nodeKey === this.data.nodeKey)]; } else { - return {}; + return []; } } }, diff --git a/src/components/tree/render.js b/src/components/tree/render.js index 72e4fc8..4943618 100644 --- a/src/components/tree/render.js +++ b/src/components/tree/render.js @@ -4,11 +4,12 @@ export default { props: { render: Function, data: Object, - node: Object + node: Array }, render: (h, ctx) => { const params = { - node: ctx.props.node, + root: ctx.props.node[0], + node: ctx.props.node[1], data: ctx.props.data }; return ctx.props.render(h, params); -- libgit2 0.21.4