4

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>

1

2 Answers 2

6

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

Sign up to request clarification or add additional context in comments.

Comments

3

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.