Vuejs2 VueJS将计算值视为原始HTML,而不需要div包装

Vuejs2 VueJS将计算值视为原始HTML,而不需要div包装,vuejs2,Vuejs2,在Vue2中,可以通过将值包装到 <div v-html="computedValue"/> 但是,无论是否需要,它都会在每个元素周围添加一个额外的标记。我想做的是,如果一个值是非HTML文本,可以选择将其作为原始HTML处理,而不需要额外的div标记 我现在能想到的唯一方法是添加2个额外的计算属性,并多次计算该值: <div v-if="containsHtml" v-html="computedValue"/>{{nonHtmlValue}} {{nonHtm

在Vue2中,可以通过将值包装到

<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]=”