Vuejs2 VueJS将计算值视为原始HTML,而不需要div包装
在Vue2中,可以通过将值包装到Vuejs2 VueJS将计算值视为原始HTML,而不需要div包装,vuejs2,Vuejs2,在Vue2中,可以通过将值包装到 <div v-html="computedValue"/> 但是,无论是否需要,它都会在每个元素周围添加一个额外的标记。我想做的是,如果一个值是非HTML文本,可以选择将其作为原始HTML处理,而不需要额外的div标记 我现在能想到的唯一方法是添加2个额外的计算属性,并多次计算该值: <div v-if="containsHtml" v-html="computedValue"/>{{nonHtmlValue}} {{nonHtm
<div v-html="computedValue"/>
但是,无论是否需要,它都会在每个元素周围添加一个额外的标记。我想做的是,如果一个值是非HTML文本,可以选择将其作为原始HTML处理,而不需要额外的div标记
我现在能想到的唯一方法是添加2个额外的计算属性,并多次计算该值:
<div v-if="containsHtml" v-html="computedValue"/>{{nonHtmlValue}}
{{nonHtmlValue}
组件
Vue.component("datatable-cell", {
template: `
<td>{{computedValue}}</td>
<!-- above is ideal I'm trying to avoid
<td><div v-if="containsHtml" v-html="computedValue"/>{{nonHtmlValue}}</td>
-->
`,
props: ["row","column"],
computed: {
containsHtml: function(){
return this.computedValue != null && this.computedValue.charAt[0] == "<";
},
nonHtmlValue: function(){
if(this.containsHtml) return "";
return this.computedValue;
},
computedValue: function(){
if(this.column.template){
var templateValue = this.column.template(this.row);
if(isSafeMarkup(templateValue)){
//Treat as HTML - how????
return templateValue;
}else{
//Escape and treat as text. This already works
return templateValue;
}
}else{
return this.row[column.name];
}
}
})
Vue.component(“数据表单元格”{
模板:`
{{computedValue}}
`,
道具:[“行”、“列”],
计算:{
containsHtml:function(){
返回this.computedValue!=null&&this.computedValue.charAt[0]=”