删除评论功能,用vue和axios实现

  1. 在Vue组件中使用v-for渲染评论列表: 在Vue组件的模板中,使用v-for指令来渲染评论列表,并绑定删除按钮的点击事件:
    <template>
      <div>
      <ul>
        <li v-for="comment in comments" :key="comment.id">
        {{ comment.text }}
        <button @click="deleteComment(comment.id)">删除</button>
        </li>
      </ul>
      </div>
    </template>
    

  2. 在Vue组件的data选项中定义评论列表:
    export default {
      data() {
      return {
        comments: []
      }
      },
      // ...
    }
    

  3. 在Vue组件的created生命周期钩子中调用后端接口获取评论列表: 在Vue组件的created生命周期钩子中,使用Axios调用后端接口获取评论列表,并将返回的数据赋值给comments数组:
    export default {
      data() {
      return {
        comments: []
      }
      },
      created() {
      axios.get('/api/comments')
        .then(response => {
        this.comments = response.data;
        })
        .catch(error => {
        console.error(error);
        });
      },
      // ...
    }
    

  4. 在Vue组件的methods选项中定义删除评论的方法: 在Vue组件的methods选项中,定义一个方法来处理删除评论的逻辑。在该方法中,使用Axios调用后端接口删除评论,并在成功删除后更新comments数组:
    export default {
      data() {
      return {
        comments: []
      }
      },
      created() {
      // ...
      },
      methods: {
      deleteComment(commentId) {
        axios.delete(`/api/comments/${commentId}`)
        .then(response => {
          // 在成功删除评论后,更新comments数组
          this.comments = this.comments.filter(comment => comment.id !== commentId);
        })
        .catch(error => {
          console.error(error);
        });
      }
      }
    }
    

    重点知识v-for的运用和数组的一些方法

好的,下面是一个实现批量删除的示例代码: ```vue <template> <div> <button @click="deleteSelected">批量删除</button> <table> <thead> <tr> <th><input type="checkbox" v-model="selectAll"></th> <th>ID</th> <th>名称</th> <th>操作</th> </tr> </thead> <tbody> <tr v-for="item in items" :key="item.id"> <td><input type="checkbox" v-model="selectedItems" :value="item.id"></td> <td>{{ item.id }}</td> <td>{{ item.name }}</td> <td> <button @click="deleteItem(item.id)">删除</button> </td> </tr> </tbody> </table> </div> </template> <script> import axios from 'axios' export default { data() { return { items: [], selectedItems: [], selectAll: false } }, mounted() { this.fetchData() }, methods: { fetchData() { axios.get('/api/items').then(res => { this.items = res.data }) }, deleteItem(id) { axios.delete(`/api/items/${id}`).then(() => { this.fetchData() }) }, deleteSelected() { axios.delete('/api/items', { data: { ids: this.selectedItems } }).then(() => { this.selectedItems = [] this.selectAll = false this.fetchData() }) } }, watch: { selectAll(val) { if (val) { this.selectedItems = this.items.map(item => item.id) } else { this.selectedItems = [] } } } } </script> ``` 这个示例代码假设你已经有一个 `/api/items` 接口可以获取所有的项,并且可以通过 DELETE 方法来删除一个或多个项。其中,`selectedItems` 是一个数组,存储了当前选中的项的 ID,`selectAll` 是一个布尔值,表示是否选中了所有项。在 `deleteSelected` 方法中,我们使用了 axios 的 `delete` 方法,将选中的项的 ID 作为参数传递给后端。注意,在这里我们使用了 `data` 选项来指定传递的数据,而不是使用 `params` 选项。这是因为在 RESTful API 设计中,使用 DELETE 方法删除资源时,应该将要删除的资源的标识符放在请求的正文中,而不是放在 URL 的参数中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值