注意:
- 閱讀本文需要對(duì) vue 有一定理解
- 下文的代碼片段位于 vue 的單文件組件中酿联,即以
.vue
結(jié)尾的文件中 - 以下說(shuō)明的只是一種實(shí)現(xiàn)方法,既不是唯一的方法也不是最好的方法( ̄_ ̄|||)
Step 1
首先皇忿,一定要先定義變量:
// app.vue <script>
data () {
return {
// 定義 getData
getData:{},
// 定義自定義指令的綁定值
ifUpdate:true
}
}
Step 2
然后要使用 ajax 的話(huà)遇汞,要在 index.html
里引入 jquery
撒遣,這樣就可以全局使用了:
// index.html
<script type="text/javascript" src="./lib/js/jquery-2.1.1.min.js"></script>
Step 3
接著使用自定義指令载城,在組件實(shí)例化后,會(huì)自動(dòng)執(zhí)行自定義指令里的方法:
組件實(shí)例化后會(huì)立即以初始值
ifUpdate
為參數(shù)第一次調(diào)用自定義指令initData
的方法,之后每次參數(shù)值ifUpdate
變化時(shí)會(huì)再次調(diào)用initData
的函數(shù)垮兑,參數(shù)為ifUpdate
的新值與舊值冷尉。
// app.vue <template>
// 在頁(yè)面節(jié)點(diǎn)(自由選擇)中綁定自定義指令
<div v-initData="ifUpdate" ></div>
// app.vue <script>
// 定義自定義指令
directives:{
initData:function(val, oldVal){
if(!val){
return;
}
var self = this;
$.getJSON( "ajax/test.json", function( data ) {
self.vm.getData = data;
});
// 下次 ifUpdate 值更新為 true 時(shí)就會(huì)再次使用上面的 ajax 去獲取數(shù)據(jù)
self.vm.ifUpdate = false;
}
}
使用場(chǎng)景
用戶(hù)評(píng)論后,刷新評(píng)論列表:
- 首次獲取評(píng)論數(shù)據(jù)后系枪,將
ifUpdate
改為false
- 用戶(hù)添加評(píng)論后將數(shù)據(jù)傳到后臺(tái)雀哨,并將
ifUpdate
變?yōu)?true
- 指令根據(jù)
ifUpdate
變化而觸發(fā),再次通過(guò) ajax 從后臺(tái)拉取數(shù)據(jù) - 拉取完再將
ifUpdate
重置為false