iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
Modern Web

用vue.js寫出一個實用的科內分享網站系列 第 21

Day21 vue.js網站刪除特定文章

  • 分享至 

  • xImage
  •  

延續昨日
今天來完善我們的 我的專案的功能吧!
首先這是目前的我的專案
再來新增2個按鈕
https://ithelp.ithome.com.tw/upload/images/20211003/20141007gIP16gEFe3.png
嘟嘟嚕新增了2個按鈕
https://ithelp.ithome.com.tw/upload/images/20211003/20141007oiHanuZccL.png
https://ithelp.ithome.com.tw/upload/images/20211003/20141007A4AViB1MoD.png
再來先從刪除文章開始
先觀察我們的db.json
https://ithelp.ithome.com.tw/upload/images/20211003/201410077PxFbQOdO8.png

進入postman
https://ithelp.ithome.com.tw/upload/images/20211003/20141007r4owBY3PJi.png
https://ithelp.ithome.com.tw/upload/images/20211003/20141007SkCD5521Cl.png
https://ithelp.ithome.com.tw/upload/images/20211003/201410074zG5yCjTlp.png

發現是怎麼接取並刪除特定文章的資料之後
先在 methods創立function deleteArticles(val)

   methods:{
         async GetSession(){
          let user=sessionStorage.getItem('user-info');
       if(!user){
         alert("請先登入")
         this.$router.push({name:'Login'})
       }
      
      this.useraccount=JSON.parse(user).id
      this.username=JSON.parse(user).username
      let articles =await axios.get(`${this.db_api}`+"articles?useraccount="+`${this.useraccount}`)
      this.projects=articles.data

      },  

         async deleteArticles(val){
         let result =await axios.delete(`${this.db_api}`+"articles/"+val);
         console.warn(result)
     
       },

然後在 v-btn 裡面設定 這個funcition並且接值(值的內容是project.id)
https://ithelp.ithome.com.tw/upload/images/20211003/201410070cuacaXNt9.png

再來就是打開console看看https://ithelp.ithome.com.tw/upload/images/20211003/20141007k1gVJMyNTq.png

Status是200 並且已經成功刪除文章了
但是網頁並沒有馬上更新 這時候就使用我們的 get session重新抓
忘記GetSession的參考day20

  methods:{
         async GetSession(){
          let user=sessionStorage.getItem('user-info');
       if(!user){
         alert("請先登入")
         this.$router.push({name:'Login'})
       }
      
      this.useraccount=JSON.parse(user).id
      this.username=JSON.parse(user).username
      let articles =await axios.get(`${this.db_api}`+"articles?useraccount="+`${this.useraccount}`)
      this.projects=articles.data

      },  

         async deleteArticles(val){
         let result =await axios.delete(`${this.db_api}`+"articles/"+val);
         console.warn(result)
        if(result.status==200){
          alert('已刪除')
          this.GetSession();
        }
       },
    }

所以這就是現在的function
這樣一來刪除後就會直接渲染畫面
p.s.為什麼有2個day17的文章 純粹我懶 複製day17的資料後改了id就上
https://ithelp.ithome.com.tw/upload/images/20211003/201410078NmIhHe7uY.png

目前測試下來不會有不能刪除的問題 所以也不用設定刪除失敗的告示
至於我沒有設定一個確定刪除嗎的雙重確認(我自己是覺得沒必要啦等之後有空再來加)

最後幫我自己做一個小補充
Q:為什麼我按刪除的時候 能正確刪除我要刪除的那筆文章
A:我用v-for把所有我的文章列印出來 我在刪除文章的按妞中有接值 而值的內容是project.id 也就是 db.json裡面的id這樣一來即使兩篇文章的title都一樣
但是projcect.id也不一樣 只是project.id並沒有秀出來而已

明天就從修改文章開始吧
我們明天見!


上一篇
Day20 vue.js椅毒供毒之整理code
下一篇
Day22 vue.js修改文章
系列文
用vue.js寫出一個實用的科內分享網站30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言