移动或者单击节点,会提示节点找不到
leeyoshinari opened this issue · comments
leeyoshinari commented
问题:打开第一个文件时,可以任意编辑、移动节点(必须要移动节点),关闭文件后,打开另一个文件,单击或移动哪个节点,就提示哪个节点找不到并报错。如果两次打开的是同一个文件,就不会报错,可以帮看看可能是什么原因吗,谢谢~
系统:windows10 家庭版 64位
浏览器:chrome 118.0.5993.71 64位
jsmind版本:0.7.4
以下是主要代码:
1、从后端读取xmind
function read_xmind(file_id) {
$.ajax({
type: 'GET',
url: '/content/get/' + file_id,
success: function (data) {
if (data['code'] === 0) {
let options = {
container: 'win-xmind',
};
let jm = new jsMind(options);
jm.show(data['data']);
}
}
})
}
2、保存 xmind
function save_xmind() {
let jm = jsMind.current;
let file_id = $('#win-xmind>.jsmind-inner')[0].id;
save_text_file(file_id, jm.get_data('node_tree').data); // 保存接口
$('#win-xmind')[0].removeChild($('#win-xmind>.jsmind-inner')[0]); // 移除容器下 jsmind 节点
}
Zhigang Zhang commented
在你这个使用场景里,只应该new一次jsmind,否则你用的那个jm对象很可能不是你希望用到的那个。
let jm = new jsMind(options);
把这句拿出来, read_xmind
和 save_xmind
里都使用这个 jm
应该就没问题了。
Zhigang Zhang commented
另外 save 之后为什么要移除 jsmind-inner 里的内容呢? 你是想清空整个脑图吗?所以这才是你需要反复new的原因?
如果是这个原因的话,可以考虑其他的处理方式,比如加上一层把脑图给挡上之类的。
leeyoshinari commented
Zhigang Zhang commented
jsmind绘图时需要知道container的尺寸,所以不要用 display:none,隐藏的话可以用 visibility:hidden
leeyoshinari commented
感谢,正常了