前言
這篇文章的代碼片段位於 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能有所幫助,如果有疑問大家可以留言交流。