Anthony Dekoci
Anthony Dekoci

Reputation: 122

How to append element using vue js

I have variable array of objects, one of which is contains element p in the string. And I want to append to element div.profile-description

But the result is vue js return raw html to div.profile-description

I want to p in the string become element in html

var interviewees = [
  {name: 'Anthony', profession: 'Developer', description: '<p>Now he works in one</p><p>very famous company</p>'},
  {name: 'Erick', profession: 'Gamer', description: '<p>He is focusing on playing</p><p>the heroes of the storm game</p>'}
];

var setDescription = new Vue({
	el: '.profile-description',
	data: {
		interviewee_description: interviewees[1].description
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.0/vue.js"></script>
<div class="profile-description">
  {{ interviewee_description }}
</div>

Upvotes: 4

Views: 41190

Answers (2)

Bert
Bert

Reputation: 82439

Use the v-html directive.

<div class="profile-description">
  <div v-html="interviewee_description"></div>
</div>

Typically, you should use a selector that only returns a single element. class will have unexpected results if there are more than one that match your selector.

Example.

Upvotes: 3

Sergio Rodrigues
Sergio Rodrigues

Reputation: 974

You need use the v-html directive:

<div v-html="interviewee_description" class="profile-description"></div>

Alert:

Dynamically rendering arbitrary HTML on your website can be very dangerous because it can easily lead to XSS vulnerabilities. Only use HTML interpolation on trusted content and never on user-provided content. https://v2.vuejs.org/v2/guide/syntax.html#Raw-HTML

Upvotes: 6

Related Questions