<p>텍스트 보간법 사용: {{ rawHtml }}</p>
<p>v-html 디렉티브 사용: <span v-html="rawHtml"></span></p>
<div v-bind:id="dynamicId"></div>
<div :id="dynamicId"></div>
<button :disabled="isButtonDisabled">버튼</button>
data() {
return {
objectOfAttrs: {
id: 'container',
class: 'wrapper'
}
}
}
<div v-bind='objectOfAttrs'></div>
지금까지 템플릿의 간단한 속성 키에만 바인딩했다.
vue는 실제 모든 데이터 바인딩 내에서 js표현식의 모든 기능을 지원한다.
이중중괄호 내부, 모든 Vue디렉티브 속성(v로 시작하는 특수 속성)내부에서 표현식을 사용할 수 있다.
각 바인딩에는 하나의 단일 표현식만 포함 가능하다. 표현식은 값으로 평가 가능한 코드 조각이다. 쉽게 말해서 리턴뒤에 사용가능한 코드여야만 한다.
따라서 다음 코드는 동작이 안된다.
표현식이 아닌 선언식
{{ var a = 1}}
흐름 제어대신 삼항 표현식을 사용하자
{{ if (ok) { return message }}
바인딩 표현식 내부에 컴포넌트에서 노출한 메서드 호출이 가능
<span :title="toTitleDate(date)">
{{ formatDate(date) }}
</span>
바인딩 내부 함수는 컴포넌트가 업데이트될 때마다 호출되므로, 데이터 변경이나 비동기 작업 트리거하는 부작용을 없애야 한다.
템플릿 표현식은 샌드박스 처리돼 제한된 전역 리스트에만 접근이 가능하나다.
Math, Date등 일반적으로 사용되는 기본 제공 전역 객체를 표시한다.
'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt'
리스트에 명시되지 않은 window와 같은 전역 속성은 템플릿 표현식에서 접근 할 수 없다.
그러나 app.config.globalProperties애 추가해서 Vue내부 모든 표현식에서 전역속성에 접근가능하게 명시적 정의할 수 있다.