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);