Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

convert string to Dom in vuejs

recently I want to convert a stirng to Dom in a vue component, but it does't work as my expectation. My code looks like this:

  // what I wrote in the template
  <div id="log">
      {{libText}}
  </div>

  // what I wrote in js
        Vue.component(...  , {
        template: ...  ,
        data: function () {
               return ...     
            }
        },
        computed: {           
            libText:function(){
                var str="<p>some html</p>";
                var div = document.createElement('div');
                div.innerHTML = str;
                return div;
            }
        },
        methods:{...}
        })

The result I get is a string "[object HTMLDivElement]" rather than a Dom. It would be greatful if anyone can help me solve this problem

like image 912
Lin Shen Avatar asked Jul 18 '16 03:07

Lin Shen


2 Answers

If you are using Vue 2, use the v-html directive:

<div v-html="yourVariable"></div>

https://v2.vuejs.org/v2/api/#v-html

like image 54
Collier Devlin Avatar answered Nov 16 '22 02:11

Collier Devlin


A possible solution is:

Template:

<div id="log">
    {{{libText}}}
</div>

Notice triple {} for get raw html/text interpretation.

Javascript:

Vue.component(...  , {
    template: ...  ,
    data: function () {
           return ...     
        }
    },
    computed: {           
        libText:function(){
            // return directly html
            var str="<div><p>some html</p></div>";
            return str;
        }
    },
    methods:{...}
});
like image 7
g.annunziata Avatar answered Nov 16 '22 01:11

g.annunziata