前言
這篇文章的代碼片段位于 vue 的單文件組件中,即以 .vue 結尾的文件中,本文說明的只是一種實現方法,既不是唯一的方法也不是最好的方法,如果大家有更好的方法可以留言,大家進行討論。
第一步
首先,一定要先定義變量:
// app.vue <script>data () { return { // 定義 getData getData:{}, // 定義自定義指令的綁定值 ifUpdate:true }}
第二步
然后要使用 ajax 的話,要在 index.html 里引入 jquery,這樣就可以全局使用了:
// index.html<script type="text/javascript" src="./lib/js/jquery-2.1.1.min.js"></script>
第三步
接著使用自定義指令,在組件實例化后,會自動執行自定義指令里的方法:
組件實例化后會立即以初始值 ifUpdate
為參數第一次調用自定義指令 initData
的方法,之后每次參數值 ifUpdate
變化時會再次調用 initData
的函數,參數為 ifUpdate
的新值與舊值。
// app.vue <template>// 在頁面節點(自由選擇)中綁定自定義指令<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 時就會再次使用上面的 ajax 去獲取數據 self.vm.ifUpdate = false; }}
使用場景說明
用戶評論后,刷新評論列表:
首次獲取評論數據后,將 ifUpdate
改為 false
用戶添加評論后將數據傳到后臺,并將 ifUpdate
變為 true
指令根據 ifUpdate
變化而觸發,再次通過 ajax
從后臺拉取數據
拉取完再將 ifUpdate
重置為 false
總結
以上就是這篇文章的全部內容,希望本文的內容對大家學習或者使用vue.js能有所幫助,如果有疑問大家可以留言交流。
新聞熱點
疑難解答