zoukankan      html  css  js  c++  java
  • Vuex 的项目实例7 修改完成状态

    需求的功能是:点击对应复选框,拿到最新的状态,再根据点击对应项的 id,把最新的状态,赋值到 list 数组中对应的 item 项。

    1、给复选框添加点击事件:

    <!--复选框-->
    <a-checkbox :checked="item.done" @click="checked(item.id)">
              {{item.info}}
    </a-checkbox>
    
    <script>
    export default {
      methods: {
        checked(id) {
          this.$store.commit('modiItem', id)
        }
      }
    }
    </script>

    2、在 store/index.js 中添加 modiItem:

    mutations: {
        // 根据 id 修改完成状态
        modiItem(state, id) {
          const index = state.list.findIndex(item => item.id === id)
         if (index !== -1) {
            state.list[index].done = !state.list[index].done
          }
        }
    }

    现在每次点击复选框时,取反它对应 id 项的 done 值。

    还可以监听复选框的状态改变,用 change

    1、监听复选框的状态改变:

    <a-checkbox :checked="item.done" @change="(e) => {cbStatusChanged(e)}">
              {{item.info}}
    </a-checkbox>
    
    <script>
    export default {
      methods: {
        // 监听复选框选中状态变化的事件
        cbStatusChanged(e) {
          console.log(e.target.checked)
        }
      }
    }
    </script>

    此时点击复选框,可以打印出最新的状态。比如点击第二项,那么打印出来的就是 true

    这时就可以拿到最新的选中状态值。

    下面我们需要把 id 也传递进去:

    <a-checkbox :checked="item.done"
             @change="(e) => {cbStatusChanged(e, item.id)}">
              {{item.info}}
    </a-checkbox>
    
    <script>
    export default {
      methods: {
        // 监听复选框选中状态变化的事件
        cbStatusChanged(e, id) {
          console.log(e.target.checked)
          console.log(id)
        }
      }
    }
    </script>

    2、定义一个参数对象:

    // 监听复选框选中状态变化的事件
        cbStatusChanged(e, id) {
          // 通过 e.target.checked 可以接收到最新的选中状态
          // console.log(e.target.checked)
          const param = {
            id: id,
            status: e.target.checked
          }
          this.$store.commit('changeStatus', param)
        }

    3、打开 store/index.js 文件,添加  changeStatus :

    mutations: {
        // 修改列表项的选中状态
        changeStatus(state, param) {
          const index = state.list.findIndex(item => item.id === param.id)
          if (index !== -1) {
            state.list[index].done = param.status
          }
        }
      }

    OK,完成效果都是一样的。

  • 相关阅读:
    C++中public、protected、private的差别
    TSP问题
    Android百日程序:绘画程序-画手指路径
    DFS csu1719 Boggle
    Oracle数据库imp
    <html>
    SWIFT学习笔记05
    Xcode7 真机免证书调试Cocos2D游戏
    mycat 不得不说的缘分
    HashMap和Hashtable的差别
  • 原文地址:https://www.cnblogs.com/joe235/p/12742737.html
Copyright © 2011-2022 走看看