Vue.js에서 이스케이프 처리되지 않은 HTML 표시


191

콧수염 바인딩 내에서 HTML을 해석하도록하려면 어떻게해야합니까? 현재 중단 ( <br />)이 표시 / 탈출되었습니다.

작은 Vue 앱 :

var logapp = new Vue({
  el: '#logapp',
  data: {
    title: 'Logs',
    logs: [
      { status: true, type: 'Import', desc: 'Learn<br />JavaScript', date: '11.11.2015', id: 1  },
      { status: true, type: 'Import', desc: 'Learn<br />JavaScript', date: '11.11.2015', id: 1  }
    ]
  }
})

그리고 여기 템플릿이 있습니다 :

<div id="logapp">    
    <table>
        <tbody>
            <tr v-repeat="logs">
                <td>{{fail}}</td>
                <td>{{type}}</td>
                <td>{{description}}</td>
                <td>{{stamp}}</td>
                <td>{{id}}</td>
            </tr>
        </tbody>
    </table>
</div>

1
줄 바꿈을 위해 이스케이프 처리되지 않은 HTML을 수행하는 것은 과잉입니다. 그것은 큰 보안 위험
Ryan Taylor

답변:


203

Vue2부터는 트리플 괄호가 더 이상 사용되지 않습니다 v-html.

<div v-html="task.html_content"> </div>

우리가 무엇을 내부에 배치해야하는지에 대한 문서 링크 에서 명확하지 않으며 v-html, 변수가 내부에 들어갑니다 v-html.

또한, v-html단지 작동 <div>또는 <span>은 불가능 <template>.

앱에서이 내용을 보려면 여기를 클릭 하십시오 .


1
<template>Angular.js에서 와서 다음과 같은 것을 찾으면 "이 아니라 "는 중요한 부분입니다.<ng-include>
domih

236

지시문 v-html을 사용하여 표시 할 수 있습니다. 이처럼 :

<td v-html="desc"></td>

3
그것은 실제로 vue2에서 작동합니다. 첫 번째는 컴파일에 관한 것입니다.
Yauheni Prakopchyk

1
텍스트를 제한하기 위해 v-html에 문제가 있습니까? v-html에서 텍스트를 제한 할 수 있습니까? 내가 시도, 그것은 실패
Zum Dummi

86

여기서 읽을 수 있습니다

당신이 사용하는 경우

{{<br />}}

탈출 할 것이다. 원시 HTML을 원한다면 사용해야합니다.

{{{<br />}}}

편집 (2017 년 2 월 5 일) : @hitautodestruct가 지적했듯이 vue 2 에서는 삼중 중괄호 대신 v-html 을 사용해야합니다 .


1
예, 심지어 문서에도 있습니다. 감사.
Mike

60
참고 VUE 2.0에서 트리플 콧수염 것을 바랍니다 사용되지 않습니다 당신은해야한다 V-HTML을 사용하는 대신.
hitautodestruct 12

5

Vue는 기본적으로 v-html 지시문과 함께 제공되어 문자열 변수에 일반 콧수염 바인딩을 사용하지 않고 요소 자체에 바인딩합니다.

따라서 특정 예제의 경우 다음이 필요합니다.

<div id="logapp">    
    <table>
        <tbody>
            <tr v-repeat="logs">
                <td v-html="fail"></td>
                <td v-html="type"></td>
                <td v-html="description"></td>
                <td v-html="stamp"></td>
                <td v-html="id"></td>
            </tr>
        </tbody>
    </table>
</div>

4

vue 구성 요소 내에 HTML 내용을 표시하려면 v-html 지시문을 사용해야합니다

<div v-html="html content data property"></div>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.