Open mr-chk opened 2 years ago
一但更改文件服务器地址,html中以前上传的图片或文件地址就是错误的了。
`const INFOLIST = await Promise.all(list.map(d => { return d.articleId
? ArticleModel.findOne(d.articleId, sessionId, true)
: d.circleId
? ShareCircleModel.findOne({ 'share_circle.id': d.circleId }, sessionId)
: UserModel.findOne({ id: d.focusUserId }, true)
}))`
const INFOLIST = await Promise.all(list.map(d => { return d.articleId
? ArticleModel.findOne(d.articleId, sessionId, true)
: d.circleId
? ShareCircleModel.findOne({ 'share_circle.id': d.circleId }, sessionId)
: UserModel.findOne({ id: d.focusUserId }, true)
}))
借助Vue的template extends把 html 文本作为一个新建的 template 实现 img src 可读取配置的 data 内容。因此我只需要MavonEditor 在上传图片时更加方便地修改嵌入的 img 标签即可,而不是调用 $img2Url api仅修改 src 的固定内容。示例如下。
<template>
<div>
<div id="mount-point"></div>
</div>
</template>
<script>
import Vue from 'vue'
export default {
mounted() {
this.createTemplate()
},
data() {
return {
}
},
methods: {
createTemplate() {
const template = Vue.extend({
template: '<div><img :src="src + 123 " alt="1234"></div>',
name: 'CompA',
data: function() {
return {
src: '10.1.1.1/'
}
}
})
new template().$mount('#mount-point')
}
}
}
</script>
<style scoped>
</style>
把源码大概看了一番,发现 markdown 语法生成的 html 依靠的是 Markdown-It 工具。看来要想修改 render 出的 html 只能去修改 Markdown-It 的转换规则了。
$vm.$img2Url(pos, url); 是否有更为灵活的方式,在图片上传时存相应方法,前端渲染时读取配置的ip。