注意:
- 閱讀本文需要對(duì) vue 有一定理解
- 下文的代碼片段位于 vue 的單文件組件中,即以
.vue結(jié)尾的文件中 - 以下說明的只是一種實(shí)現(xiàn)方法,既不是唯一的方法也不是最好的方法( ̄_ ̄|||)
Step 1
首先,一定要先定義變量:
// app.vue <script>
data () {
return {
// 定義 getData
getData:{},
// 定義自定義指令的綁定值
ifUpdate:true
}
}
Step 2
然后要使用 ajax 的話,要在 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>
// 在頁面節(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)景
用戶評(píng)論后,刷新評(píng)論列表:
- 首次獲取評(píng)論數(shù)據(jù)后,將
ifUpdate改為false - 用戶添加評(píng)論后將數(shù)據(jù)傳到后臺(tái),并將
ifUpdate變?yōu)?true - 指令根據(jù)
ifUpdate變化而觸發(fā),再次通過 ajax 從后臺(tái)拉取數(shù)據(jù) - 拉取完再將
ifUpdate重置為false