zoukankan      html  css  js  c++  java
  • Vue 简单实例 地址选配8

    我们可以看到所有的地址都是点亮的状态,就是外面都有个橙色的框。我们需要把默认地址,才设置为点亮的状态。

    1、新建变量 checkedIndex,默认为 0,然后把遍历地址列表,把字段 isDefault 为 true 的地址索引赋值给 checkedIndex

    data() {
        return {
          checkedIndex: 0, // 默认选中的索引
        }
    },
    methods: {
        getAddress() {
          this.axios.get('/mock/address.json').then(res => {
            console.log(res)
            this.addrList = res.data.data
            this.addrList.forEach((item, index) => {
              if (item.isDefault) {
                this.checkedIndex = index
              }
            })
          })
        },
    }

    2、修改循环代码:

    <li :class="{ check: item.isDefault }" v-for="item in addrFilter" :key="item.addressId">

    也可以写为:

    <li  :class="{ check: checkedIndex == index }" v-for="(item, index) in addrFilter" :key="item.addressId">

    此时效果图:

    3、添加点击事件:

    <li :class="{ check: checkedIndex == index }"
         v-for="(item, index) in addrFilter" :key="item.addressId"
         @click="checkedIndex = index">

    把当前索引赋值给 checkedIndex。

    点击第一个地址后的效果图:

    4、给设为默认添加点击事件:

    <a href="javascript:;" class="addr-set-default-btn" @click="slectDefault(index)">
           <i>设为默认</i>
    </a>
    
    <script>
    export default {
      methods: {
        // 设为默认
        slectDefault(index) {
          console.log(index)
          this.addrList.map((item, i) => {
            if (index == i) {
              item.isDefault = true
            } else {
              item.isDefault = false
            }
          })
        }
      }
    }
    </script>

    当前点击的索引和遍历中的索引一致时,设为 true ,其他都设置为 false。

    也可以点击时传递 addressId,效果都是一样的:

    <a href="javascript:;" class="addr-set-default-btn" @click="slectDefault(item.addressId)">
           <i>设为默认</i>
    </a>
    
    <script>
    export default {
      methods: {
        // 设为默认
        slectDefault(id) {
          console.log(id)
          this.addrList.map(item => {
            if (id == item.addressId) {
              item.isDefault = true
            } else {
              item.isDefault = false
            }
          })
        }
      }
    }
    </script>

    切换后的效果图:

  • 相关阅读:
    iLearning D3.js 2.0 released
    A better way to learn D3 js
    数据中台解析Hive SQL过程
    go语言刷leetcode
    go语言刷leetcode
    普通方法多态,属性,私有方法和静态方法不多态
    Kafka spring 集成
    Scala Sublime text 3 Build 编译
    tornado settings想到的
    linux 线程回顾
  • 原文地址:https://www.cnblogs.com/joe235/p/12705745.html
Copyright © 2011-2022 走看看