說說 Vue.js 的指令與事件
指令(Directives)帶有字首 v-
,比如 v-if、v-html、v-pre 等。指令的作用是當表示式的值改變時,相應地將某些行為應用到 DOM 上,我們以 v-if 為例:
html:
<div id="app">
<p v-if="show">顯示</p>
</div>
js:
<script>
var app=new Vue({
el:'#app',
data:{
show:true
}
});
</script>
這個例子中,當資料 show 的值為 true 時,會插入 p 元素,當為 false 時,則會被移除。
Vue.js 的核心理念是資料驅動 DOM,所以我們只需維護好資料,剩下的事交給 Vue 就好啦O(∩_∩)O~
1 v-bind
v-bind 會動態更新 HTML 元素上的屬性。
html:
<div id="app2">
<a v-bind:href="url">人工智慧畫作拍賣 作品簽名是數學方程式</a><p></p>
<img v-bind:src="imgUrl" width="50%" height="50%">
</div>
js:
var app2=new Vue({
el:'#app2',
data:{
url:'http://news.163.com/photoview/00AO0001/2297321.html#p=DV5FFQOV00AO0001NOS',
imgUrl:'http://pic-bucket.nosdn.127.net/photo/0001/2018-10-27/DV5FFQOV00AO0001NOS.jpg'
}
});
效果:
示例中的連結與圖片的地址都做了資料繫結,當我們通過各種方式改變資料時,連結和圖片都會自動更新。
2 v-on
v-on 用於繫結事件監聽器。
html:
<div id="app3">
<p v-if="show">顯示</p>
<button v-on:click="hide">點選隱藏</button>
</div>
js:
var app3 = new Vue({
el: '#app3',
data: {
show: true
},
methods: {
hide: function () {
this.show = false;
}
}
});
效果:
在 button 按鈕上,使用 v-on:click
給該元素繫結了一個點選事件。
在普通元素上,v-on 可以監聽原生的 DOM 事件,除了 click 外,還有 dblclick、keyup、mousemove 等。表示式可以是一個方法名,這些方法都寫在 Vue 例項的 methods 屬性內,並且是函式的形式,函式內的 this 指向的是當前 Vue 例項本身,因此可以直接使用 this.xxx
的形式來訪問或修改資料。
表示式也可以是一個內聯語句:
html:
<div id="app4">
<p v-if="show">顯示</p>
<button v-on:click="show=false">點選隱藏</button>
</div>
js:
var app4 = new Vue({
el: '#app4',
data: {
show: true
}
});
效果與上例相同。
如果要繫結的事件必須處理複雜的業務邏輯,那麼建議在 methods 裡宣告方法來實現,因為這樣可讀性更好也方便維護。
3 呼叫 methods 中定義的方法
Vue.js 代理了 methods 中定義的方法,所以我們可以像訪問 Vue 資料那樣來呼叫方法。
js:
var app5 = new Vue({
el: '#app5',
data: {
},
methods:{
init:function (val) {
console.log(val);
}
},
mounted:function () {
this.init('初始化操作');
}
});
app5.init("初始化頁面");
效果:
4 指令縮寫
指令縮寫也稱為語法糖,它指的是:在不影響功能的前提下,新增某種方法實現同樣的效果,從而方便程式開發。
v-bind 和 v-on 指令都提供了縮寫。
指令 | 縮寫 |
---|---|
v-bind | : |
v-on | @ |
比如之前的例子可以縮寫為:
html:
<div id="app2">
<a :href="url">人工智慧畫作拍賣 作品簽名是數學方程式</a>
<p></p>
<img :src="imgUrl" width="50%" height="50%">
</div>
<div id="app3">
<p v-if="show">顯示</p>
<button @click="hide">點選隱藏</button>
</div>
建議使用縮寫形式,這樣程式碼更簡潔哦O(∩_∩)O~
相關文章
- 說說 Vue.js 元件Vue.js元件
- vue.js指令與事件(v-bind)Vue.js事件
- 說說 Vue.js 元件的高階特性Vue.js元件
- 說說JavaScript中的事件模型JavaScript事件模型
- 嘗試說一說事件的使用事件
- 說說 Vue.js 中的 functional 函式化元件Vue.jsFunction函式元件
- 說說 Vue.js 元件的高階特性-續篇Vue.js元件
- 說說如何基於 Vue.js 實現表格元件Vue.js元件
- 說說如何使用 Vue.js 開發購物車功能Vue.js
- 說說在 Vue.js 中如何實現元件間通訊Vue.js元件
- 說說如何在 Vue.js 中實現標籤頁元件Vue.js元件
- javascript事件列表解說JavaScript事件
- 說說CORS與jsonpCORSJSON
- 說說Mongodb 與 MySQL的那些事MongoDBMySql
- 說說在 Vue.js 中如何實現元件間通訊(高階篇)Vue.js元件
- Vue.js自定義指令的用法與例項Vue.js
- buffer busy wait 等待事件說明(轉)AI事件
- 【WAIT】 log file sync等待事件說明AI事件
- openssh版本更新與說明 openssl版本更新與說明
- 清華社互動英語視聽說答題指令碼的使用說明指令碼
- 說說 Python 的列表Python
- 說說java的反射Java反射
- 瀏覽器事件環和Node事件環不得不說的故事!瀏覽器事件
- “上海名媛群”事件,我來說幾句事件
- 舉例說明js滑鼠事件有哪些?JS事件
- JavaScript 事件迴圈(1) —— 從 setTimeout 說起JavaScript事件
- OCR迴圈:說說遊戲中的挑戰與體驗遊戲
- 為什麼說Web開發和Vue.js是如此的有趣?WebVue.js
- 說說 Python 的 if 語句Python
- 說說劫持 Cookie 的原理Cookie
- 說說React元件的StateReact元件
- 說說Flutter中的RepaintBoundaryFlutterAI
- 說說Flutter中的SemanticsFlutter
- 說說你對this的理解
- 說說Linux shell外部命令與內建命令Linux
- 說服您的CTO使用事件溯源 -Event Store Blog事件
- 說說 auto
- 說說我對 WSGI 的理解