2017-07-16 48 views
0

我試圖用Vuejs實現模態窗口。 下面的代碼顯示用戶上傳喜歡的照片後, 出現模式窗口,當前上傳的照片和新登記的照片顯示爲 當用戶按下「確認」按鈕時,它會確認。如何使用vuejs與ajax進行通信後的數據集

但是,目前在上傳後用ajax獲取數據後,數據未在模態窗口中設置。 如何在模態窗口部分設置數據?

<template> 
<div> 
    <!-- upload --> 
    <div class="button__action"> 
     <button type="button" @click="uploadData(originalData.image)">upload</button> 
    </div> 
    <!-- Modal window --> 
    <modal name="modal-view"> 
     <div> 
      <div class="modal__box" v-if="modalList.list"> 
       <img :src="modalList.list.url"> 
       <p class="image__name">{{modalList.list.name}}</p> 
      </div> 

      <button type="button" @click="submit">Confirm</button> 
     </div> 
    </modal> 
</div> 
</template> 

<script> 
import { post } from './handler/api' 
import { toFormat } from './handler/form' 

export default { 
    props: { 
     originalData: { 
      type: Object, 
      required: true, 
     } 
    }, 
    data: function(){ 
     return { 
      modalList : { 
       list : [], 
      }, 
     } 
    }, 
    methods: { 
     showModal() { 
      this.$modal.show('modal-view'); 
     }, 
     uploadData() { 
      const form = toFormat({image: this.originalData.image}) 
      post(`/api/upload/`, form) 
       .then((res) => { 
        if(res.data) { 
         Vue.set(this.$data, 'modalList', res.data.list); 
         this.$modal.show('modal-view'); 
        } 
       }) 
       .catch((err) => { 
        //error 
       }) 
     }, 
     submit() { 

     } 
    } 
} 
</script> 
+0

你想設置的,而不是設置'modalList'本身'modalList'的'list'財產? – Bert

+0

對不起,錯誤。我想設置'列表'屬性。你是對的!! – Kazuki

回答

0

試試這個:

uploadData() { 
    var vm = this; 
    post(`/api/upload/`, toFormat({image: this.originalData.image})).then(res => { 
    if(res.data) { 
     vm.modalList = res.data.list; 
     this.$modal.show('modal-view'); 
    } 
    }) 
} 
+0

thaks!它工作正常!但我不知道爲什麼......你把vm換成什麼? – Kazuki

+0

名稱vm是viewModel的快捷方式,全部關於範圍。在'then'功能裏,'this'和外部的不一樣。所以我把範圍(你的視圖模型/'this'外)保存在'vm'變量中,現在你可以訪問你的modalList。順便說一句,如果它的作品可以接受答案? :) 謝謝! –

相關問題