diff --git a/web/src/pages/Doc/catalogList.js b/web/src/pages/Doc/catalogList.js index 70f7dd79..947e1529 100644 --- a/web/src/pages/Doc/catalogList.js +++ b/web/src/pages/Doc/catalogList.js @@ -11,7 +11,7 @@ let langList = [ } ] let StartList = ['introduction', 'start', 'deploy', 'client', 'translate', 'changelog'] -let CourseList = new Array(27).fill(0).map((_, index) => { +let CourseList = new Array(28).fill(0).map((_, index) => { return 'course' + (index + 1) }) let APIList = [ diff --git a/web/src/pages/Doc/routerList.js b/web/src/pages/Doc/routerList.js index b97f2793..c674b703 100644 --- a/web/src/pages/Doc/routerList.js +++ b/web/src/pages/Doc/routerList.js @@ -34,6 +34,7 @@ export default [ { path: 'course25', title: '关于概要' }, { path: 'course26', title: '如何实现AI生成节点内容' }, { path: 'course27', title: '快捷键操作如何传递自定义参数' }, + { path: 'course28', title: '如何动态修改自定义元素的大小' }, { path: 'doExport', title: 'Export 插件' }, { path: 'drag', title: 'Drag插件' }, { path: 'introduction', title: '简介' }, diff --git a/web/src/pages/Doc/zh/course28/index.md b/web/src/pages/Doc/zh/course28/index.md new file mode 100644 index 00000000..10030b44 --- /dev/null +++ b/web/src/pages/Doc/zh/course28/index.md @@ -0,0 +1,50 @@ +# 如何动态修改自定义元素的大小 + +自定义节点大小不会随着自定义元素大小改变而自动改变,如果有动态修改自定义节点内容大小的需求,比如展开收起一部分内容,目前可以尝试如下做法: + +1.控制节点大小的字段必须是节点数据中的一个字段,否则重新渲染时节点重新创建大小又会恢复最初的大小: + +```js +new MindMap({ + isUseCustomNodeContent: true, + customCreateNodeContent: node => { + let el = document.createElement('div') + const _expand = node.nodeData.data._expand + el.style.background = '#000' + el.style.width = '100px' + el.style.height = _expand ? '100px' : '50px' + return el + } +}) +``` + +可以给节点数据添加一个自定义字段,比如`_expand`,然后通过这个字段来控制自定义元素的大小。 + +2.点击自定义节点内容切换大小时需要修改节点数据,然后调用渲染方法: + +```js +new MindMap({ + isUseCustomNodeContent: true, + customCreateNodeContent: node => { + const el = document.createElement('div') + const _expand = node.nodeData.data._expand + el.style.background = '#000' + el.style.width = '100px' + el.style.height = _expand ? '100px' : '50px' + el.addEventListener('click', () => { + node.setData({ + resetRichText: true, + _expand: !_expand + }) + this.mindMap.render() + }) + return el + } +}) +``` + +注意其中的`resetRichText`字段必须设置为`true`,否则不会触发渲染。 + +### 完整示例 + +