vuejs常用指令
什麼是指令呢?上面我們用到的v-model就是一個指令
Vue。js的指令是以v-開頭的,它們作用於HTML元素,指令提供了一些特殊的特性,將指令繫結在元素上時,指令會為繫結的目標元素新增一些特殊的行為,我們可以將指令看作特殊的HTML特性(attribute)。
Vue。js提供了一些常用的內建指令,接下來我們將介紹以下幾個內建指令:
v-if指令
v-show指令
v-else指令
v-for指令
v-bind指令
v-on指令
v-if指令
v-if是條件渲染指令,它根據表示式的真假來刪除和插入元素
基本語法:
v-if=“expression”
expression是一個返回布林值的表示式,表示式可以是一個布林屬性,也可以是一個返回布林的運算式。
v-show指令
v-show和v-if區別。
v-show不管條件是否成立,都會渲染html,而v-if只有條件成立才會渲染
先看兩個截圖,第一個是當isMale為true時,第二張圖是isMale為false條件不成立時,可以看到v-if的html並沒有渲染出來,
而使用v-show的div僅僅是更改了它的樣式display: none;
v-else指令
v-else指令與v-if或者v-show同時使用,v-if條件不成立則會顯示v-else內容
v-for指令
v-for指令基於一個數組渲染一個列表,它和JavaScript的遍歷語法相似
v-for=“item in list”
list是一個數組,item是當前遍歷的陣列元素
v-for=“(item,index) in list”其中index是當前迴圈的索引,下標從0開始
序號 | 姓名 | 年齡 |
v-bind指令
v-bind動態地繫結一個或多個特性,可以在其名稱後面帶一個引數,中間放一個冒號隔開,這個引數通常是HTML元素的特性(attribute),如v-bind: class
class可以和v-bind:class同時存在 ,也就是說有class了,再新增v-bind:class並不會覆蓋原來的樣式類,而是在原來基礎上新增新的類名
以上v-bind:src也可簡寫成:src,修改上面程式碼
v-on指令
v-on用於監聽DOM事件,用法和v-bind類似,例如給button新增點選事件
同樣,和v-bind一樣,v-on也可以使用簡寫,用@符號代替,修改程式碼:
我們來看個例子:
以下是一個點選隱藏和顯示p文字段落的程式碼
微風輕輕的吹來,帶來了一絲絲涼意
綜合示例
new Vue({ el: ‘#app’, data: { person:{ name:‘’, age:‘’, }, list:[{ name:‘章三’, age:18 },{ name:‘李四’, age:23 }] }, methods:{ add:function(){ this。list。push(this。person); this。person = {name:‘’,age:‘’}; }, deleteItem:function(index){ // 刪除一個數組元素 this。list。splice(index,1); }, marry:function(){ alert(“不好意思,你沒有女朋友結不了婚”); } }, created:function(){ } })vue元件
元件 (Component) 是 Vue。js 最強大的功能之一,使用元件化方式開發,可以封裝可重用的程式碼,減少重複勞動
接下來,我們來註冊一個元件
語法
Vue。component(tagName, options)
註冊元件
Vue。component(‘component-a’, { template: ‘
component-a是註冊的元件標籤,下面就可以使用這個元件了
最後,渲染為:
透過Vue。component方式註冊的元件是一個全域性元件 ,我們還可以建立區域性元件,透過某個 Vue 例項/元件的例項選項 components 註冊僅在其作用域中可用的元件
var Child = { template: ‘
區域性註冊的元件 將只在父元件模板中可用
元件通訊
元件 A 在它的模板中使用了元件 B,它們之間必然需要相互通訊,父元件可能要給子元件下發資料,子元件則可能要將它內部發生的事情告知父元件
我們先來看一張圖
從圖上可以很清晰的看到,父子元件通訊主要是使用prop和自定義事件,父元件透過 prop 給子元件下發資料,子元件透過事件給父元件傳送訊息。
父子元件的關係可以總結為 prop 向下傳遞,事件向上傳遞。
來看個示例:
需要注意的是,元件裡面的data必須是一個函式,透過return形式返回
1。父元件下發資料到子元件
在元件中透過v-bind新增一個引數將資料傳遞到子元件裡,然後使用props接收傳遞過來的引數props:[‘msg’]
渲染結果:
2。子元件透過事件給父元件傳送訊息
子元件透過$emit觸發事件
this。$emit(‘reply’,‘子元件訊息’)
在元件標籤中透過v-on進行監聽
監聽到事件後觸發reply函式,接收到子元件傳送的訊息
replay:function(msg){ this。replyMsg = msg }
渲染結果:
以上可以看到我們是透過字串陣列來定義prop的,除此之外我們還可以用物件的形式來定義prop,用來為元件的 prop 指定驗證規則,
type的值可以是這些:String Number Boolean Function Object Array Symbol,例如:
props: { name: String, showDialog: { type: Boolean, default: false } }
實現一個dialog對話方塊元件
總結
以上簡單介紹了vuejs的MVVM模型和它的雙向繫結機制,然後以一個helloworld示例開始了vuejs的使用,
之後又瞭解和熟悉了幾個比較常用的vue指令,綜合以上,構建了一個簡單的示例,最後講了vue中元件的一些
用法,父子元件是如何進行通訊的,結合元件用法,實現了一個對話方塊元件。