【完整程式碼附於文末】
如果我們想要把 data 的資料渲染到畫面上,有以下幾種方式將資料綁定至 DOM:
標籤渲染的好處 :
如果想要文字加粗的話,就可以把<span>
的部分改成<strong>
來進行文字加粗。
<p><strong v-text="name"></strong>在<span v-text="position" ></span>吃早餐</p>
<p>{{ name }}在{{ position }}吃早餐</p>
這兩個的 render 效果一樣,只是 v-text 可以在標籤上渲染,因此比 {{}}
再更靈活一點。
如果我們希望渲染的內容 包含html元素,那麼可以使用 v-html
<p v-html="rawHtml"></p>
使用v-once
之後,在第一次渲染之後,就不會再變更內容。
<p v-once>{{ name }}在{{ position }}吃早餐</p>
使用v-pre
可以避免文字被轉譯,資料內容也不會被帶出來。
<p v-pre> 這段文字不會被轉譯:{{ name }}在{{ position }}吃早餐</p>
此外,我們也可以透過表達式來花式(?) 渲染我們需要的內容 :
<p>樣板字面值 : {{` ${name}在${position}吃早餐`}}</p>
<p>反轉字串 : {{ text.split('').reverse().join('') }}</p>
<p>綁定methods : {{ say('杰倫') }}</p>
<p>JS運算 : {{ 1+1 }}</p>
※ 如果你不想一直用 console.log 檢查資料狀態,可以直接把data渲染在畫面上看~
<p>顯示幕前的陣列內容{{ products }}</p>
const App = {
name: 'component',
data() {
return {
name: '小明',
position: '早餐店',
text: '小明在早餐店吃早餐',
rawHtml: '<p>小明在早餐店吃早餐</p>',
products: [
{
name: '蛋餅',
price: 30,
vegan: false
},
{
name: '飯糰',
price: 35,
vegan: false
},
{
name: '小籠包',
price: 60,
vegan: false
},
{
name: '蘿蔔糕',
price: 30,
vegan: true
}
],
selected: [
{
name: '蛋餅',
price: 30,
vegan: false
},
{
name: '飯糰',
price: 35,
vegan: false
},
]
}
},
methods: {
say(name) {
return `${name}在${this.position}吃早餐`
}
},
computed: {
total() {
const total = this.selected.reduce((curr, next) => {
return curr + next.price;
}, 0);
console.log(total);
return total;
}
},
created() {
}
};
Vue.createApp(App).mount('#app');