Vue-(四)模板語法

4-1.用括號語法,插入動態的數值或文字 (影片)

雙大括號:動態綁定

1
2
3
<div id="app">
<span v-once>{{message}}</span>
<div>
1
2
3
4
5
6
new Vue({
el:"#app",
data:{
message:'Hello',
},
})

v-once:模板只渲染一次,不被二次變更

第一個”“因為加上v-once,即使按button會執行函式改變message的值,但第二個”“在畫面中,並不會被重新渲染

1
2
3
4
5
6
7
<div id="app">
<span v-once>{{message}}</span>
<br/>
<span>{{message}}</span>
<br/>
<button v-on:click="append">Append</button>
</div>

1
2
3
4
5
6
7
8
9
10
11
new Vue({
el:"#app",
data:{
message:'Hello',
},
methods:{
append(){
this.message += "!";
},
}
})

v-html:渲染出html字串

1
2
3
<div id="app">
<span v-html="message"></span>
</div>
1
2
3
4
5
6
new Vue({
el:"#app",
data:{
message:'<h1 style="color:red;">Hello</h1>'
},
})

使用v-html的風險:
因為允許使用者輸入的內容包含html,使用者可以故意用 ‘‘,裡面包了挖礦或攻擊程式。
所以使用v-html時,要確保資料來源,資料來源應當是資料庫中的安全內容。


4-2.v-bind, v-on指令 (影片)

v-bind:透過資料綁定,改變某個屬性的值

1
2
3
<div id="app">
<input type="checkbox" v-bind:checked="check_status">
</div>
1
2
3
4
5
6
new Vue({
el:"#app",
data:{
check_status:false,
},
})

v-on:用來偵聽DOM事件,以改變資料

  • v-on:click
  • v-on:load
  • v-on:mouseover
  • ….其他事件
    1
    2
    3
    4
    <div id="app">
    <input type="checkbox" v-bind:checked="check_status">
    <button v-on:click="change">Change status</button>
    </div>
1
2
3
4
5
6
7
8
9
10
11
new Vue({
el:"#app",
data:{
check_status:false,
},
methods:{
change(){
this.check_status = !this.check_status;
}
}
})

v-bind也可以加入表達式

表達式:用()括起來會是一個值,就代表它是一個表達式

1
2
3
4
5
<div id="app">
<h1>{{count}}</h1>
<input type="checkbox" v-bind:checked="(count%2==0)">
<button v-on:click="add">Add</button>
</div>

1
2
3
4
5
6
7
8
9
10
11
12
new Vue({
el:"#app",
data:{
count:0,
check_status:false,
},
methods:{
add(){
this.count += 1;
}
}
})

雙大括號中也可以使用表達式

1
2
3
4
<div id="app">
<h1>{{count*2}}</h1>
<button v-on:click="add">Add</button>
</div>
1
2
3
4
5
6
7
8
9
10
11
new Vue({
el:"#app",
data:{
count:0,
},
methods:{
add(){
this.count += 1;
}
}
})

4-3.v-bind, v-on的縮寫 (影片)

  • v-on:click ——–> @click
  • v-bind:xxx ——–> :xxx

4-4.雙向綁定的v-model (影片)

v-model

1
2
3
4
5
<div id="app">
<span>{{message}}</span>
<br/>
<input type="text" v-model="message"/>
</div>
1
2
3
4
5
6
new Vue({
el:"#app",
data:{
message:'',
},
})

重點釐清

  • v-bind: 單向綁定
  • v-model: 雙向綁定

學習來源

Hiskio-姚偉揚老師-精通 VueJS 前端開發完全指南

© 2020 Leah's Blog All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero