wangEditor
wangEditor copied to clipboard
点击修改链接,希望能在弹窗内修改文本text和链接;但是目前修改除了文本外的元素均有效,修改文本内容无效
问题描述
点击修改链接,再弹窗框内有修改链接地址和链接文字的字段,点击修改,链接地址可以更改成功,链接文字无法修改
wangEditor 版本
5.1.23
是否查阅了文档 ?
是
代码结构
` // 方法调用 updateLink(editor,param.link, param.title ); // 修改链接
// 方法封装 export async function updateLink( editor: IDomEditor, url: string, text: string, target: string = '_blank' ) { console.log('updateLink', url, text,target,); if (!url) return;
// 校验 const checkRes = await check('editLink', editor, text, url); console.log('checkRes', checkRes); if (!checkRes) return; // 校验未通过
// 转换 url const parsedUrl = await parse('editLink', editor, url); console.log('parsedUrl', parsedUrl);
// 修改链接 const props: Partial<LinkElement> = { url: replaceSymbols(parsedUrl), target: target, children: [{ text: replaceSymbols(text) }], }; Transforms.setNodes(editor, props, { match: (n) => DomEditor.checkNodeType(n, 'link'), });
// 尝试用其他的方法修改,也只能修改链接和其他参数 // // 获取当前选中的链接节点 // const [linkEntry] = Editor.nodes(editor, { // match: n => !Editor.isEditor(n) && SlateElement.isElement(n) && n.type === 'link', // }); // console.log('linkEntry',linkEntry) // if (!linkEntry) return; // 如果没有找到链接节点,直接返回
// const [linkNode, path] = linkEntry;
// // 遍历链接节点的子节点,找到文本节点并更新 // for (const [child, childPath] of Node.children(editor, path)) { // if (SlateElement.isElement(child) && child.type === 'text') { // // 将text的文本改成新传进来的text // Transforms.insertText(editor, text, { at: childPath }); // break; // 假设链接内只有一个文本节点,更新后即退出循环 // } // } }`