vue 自定義指令實(shí)現(xiàn)數(shù)據(jù)拉取更新

注意

  • 閱讀本文需要對(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)論列表:

  1. 首次獲取評(píng)論數(shù)據(jù)后,將 ifUpdate 改為 false
  2. 用戶添加評(píng)論后將數(shù)據(jù)傳到后臺(tái),并將 ifUpdate 變?yōu)?true
  3. 指令根據(jù) ifUpdate 變化而觸發(fā),再次通過 ajax 從后臺(tái)拉取數(shù)據(jù)
  4. 拉取完再將 ifUpdate 重置為 false
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容