diff --git a/src/App.vue b/src/App.vue index b90089afc6c68ad955624eee5b9c9ee955f127f4..c4525bf2c2a028fcfb10173d05bc3f5d40a5fe52 100644 --- a/src/App.vue +++ b/src/App.vue @@ -306,6 +306,7 @@ export default { textLength: "", userList: false, callUserList: [], + linkList: [], selectionInfo: { selectorId: "", selectionStart: "", @@ -452,13 +453,34 @@ export default { }); }, renderLinksHtml({ vDom, links }) { - const _this = this; - console.log(links); - + // 缓存里没有的链接,就发送请求获取信息 + const emitList = links.filter( + item => !this.linkList.find(link => link && link.url === item.url) + ); + console.log("emit", emitList); this.$emit("renderLinks", { - links, - callback: function(list) { - list.forEach(item => { + links: emitList, + callback: list => { + // 用原始数组做循环 + links.forEach(item => { + const linkItem = this.linkList.find( + link => link && link.url === item.url + ); + // 如果 + if (!linkItem) { + const returnLink = list.find( + link => link && link.url === item.url + ); + if (!returnLink) return; + item.title = returnLink.title; + item.description = returnLink.description; + item.icon = returnLink.icon; + this.linkList.push(returnLink); + } else { + item.title = linkItem.title; + item.description = linkItem.description; + item.icon = linkItem.icon; + } // item.csdn = true; const linkEl = vDom.querySelector("#" + item.id); if (!linkEl) return; @@ -472,7 +494,8 @@ export default { const title = getLinkTitle(linkEl, item); linkEl.innerHTML = renderLinkCard(title, item); }); - _this.html = vDom.innerHTML; + + this.html = vDom.innerHTML; } }); } diff --git a/src/assets/js/utils.js b/src/assets/js/utils.js index cb32276383459473a7388ed0e7be9c498e68562a..f167503f452df3cb8a14b88e982b1e42b580c9bd 100644 --- a/src/assets/js/utils.js +++ b/src/assets/js/utils.js @@ -395,7 +395,7 @@ export function renderLinkCard(title, item) { let content; switch (linkType) { case "1": - content = `${item.title}`; + content = `${title || item.title || ""}`; break; case "2": content = `${item.url}`; diff --git a/src/components/content/components/link-type-select.vue b/src/components/content/components/link-type-select.vue index 8df856b9a739346d6e704a952ff0b3e2e393fec7..eb911a6a6d9c057e2ffc4c093deb1f5aedeecd55 100644 --- a/src/components/content/components/link-type-select.vue +++ b/src/components/content/components/link-type-select.vue @@ -43,7 +43,7 @@ export default { position: { immediate: true, handler: function({ left, top }) { - this.left = left + 12; + this.left = left; this.top = top + 40; } } diff --git a/src/components/content/mixins/select-link-type-mixins.js b/src/components/content/mixins/select-link-type-mixins.js index 7936749bad5762fc4609ece9f56e0aca951bdb27..48100e483994798051de35ee0e7e867825fc41f4 100644 --- a/src/components/content/mixins/select-link-type-mixins.js +++ b/src/components/content/mixins/select-link-type-mixins.js @@ -2,7 +2,6 @@ import { getPosition, formatText, linkTypeSpiltStr } from "@/assets/js/utils"; export default { methods: { handleSelectLinkType(index) { - console.log(index); const originalText = this.textContent; const queryInfo = this.queryInfo; const cursorPosition = getPosition(this.id); @@ -71,7 +70,7 @@ export default { left: pEl.offsetLeft < frameWidth * (2 / 3) ? pEl.offsetLeft - : pEl.offsetLeft - 140, + : pEl.offsetLeft - 120, top: pEl.offsetTop - textEl.scrollTop }; textEl.parentNode.removeChild(hideEl);