我有一个从编辑器获取并存储在数据库中的 html 字符串。
<h3><a href="#" rel="noopener noreferrer nofollow"><em><strong>Profile Of User:</strong></em></a></h3><p></p><p>{{user}}</p>
我想从数据库中检索它并将其呈现为 HTML。当我使用 v-html 时,它将呈现为:
<v-card-text v-html="content"></v-card-text>
用户资料:
{{user}}
如果我有这样的数据属性,如何从数据属性渲染 {{hello}}:
data() {
return {
user: "Lim Socheat",
content:"<h3><a href="#" rel="noopener noreferrer nofollow"><em><strong>Profile Of User:</strong></em></a></h3><p></p><p>{{user}}</p>"
};
},
预期结果:
用户简介:
Lim Socheat
因为{{ user }}将被渲染为Lim Socheat
最佳答案
使内容成为计算属性。然后像这样使用它:
computed: {
content() {
return '<h3><a href="#" rel="noopener noreferrer nofollow"><em><strong>Profile Of User:</strong></em></a></h3><p></p><p>' + this.user + '</p>';
}
}
您可以通过这种方式使用数据中定义的所有变量。
更新: 由于 OP 从后端获取 HTML 字符串,因此在这种情况下他们需要替换变量。 我们保留了可能出现的所有变量的映射,然后动态创建正则表达式来替换代码中的所述键。
computed: {
content() {
// keep a map of all your variables
let valueMap = {
user: this.user,
otherKey: 250
};
let value = '<h3><a href="#" rel="noopener noreferrer nofollow"><em><strong>Profile Of User:</strong></em></a></h3><p></p><p>{{user}}</p>';
let allKeys = Object.keys(valueMap);
allKeys.forEach((key) => {
var myRegExp = new RegExp('{{' + key + '}}','i');
value = value.replace(myRegExp, valueMap[key]);
});
return value;
}
}
关于vue.js - VueJS 使用 v-html 渲染 html 字符串中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59782289/