居然被vue中的冒号坑了必须总结

场景描述:

根据后台传值动态显示开关(0为关,1为开),对开关进行操作时请求后台,需要传两个参数:ID,State

需求描述:

我先说我的需求,我想在列表的每一条添加一个开关,可以改当前一条数据的状态,并发送到服务端,并根据服务端返回的结果局部刷新当前一条数据

但是在做的过程中出现了一些问题,这个确实是前端学艺不精。。导致的,先看问题

我是这样去写的代码

<template v-slot:state="slotData">
       <el-switch v-model="slotData.data.vo.state" active-value="1" inactive-value="0"
                        @change="handleEnable(slotData.data)">
      </el-switch>
</template>

然后后端传过来的是一个interger类型的0,1,但是奇怪了,始终映射不上而且出现
slotData.data.vo.state的状态都是0的情况于是程序中质检,看看究竟是哪里出现了问题,,,

<template v-slot:state="slotData">
                {{slotData.data.vo.state}}
                    <el-switch v-model="slotData.data.vo.state" active-value="1" inactive-value="0"
                        @change="handleEnable(slotData.data)">
                    </el-switch>
                </template>

在这里插入图片描述
这里发现数据都变成了0,是我后端接口的问题吗?并没有控制台上看后端返回的数据是正常的

于是就开始思考。。。因为用了框架问前端的小姐姐说它并没有变化数据。。

于是开始看elementUI的文档,才找到解决办法

究其原因:

Swich默认是boolean类型,而后台传值 为number类型

请注意以面的写法,active-value和inactive-value的值分别是字符串的0和1,如果你赋值为数字类型的 0 或 1是无法正常工作的,若赋值为数值类型,需这样写:

<template v-slot:state="slotData">
     <el-switch v-model="slotData.data.vo.state" :active-value="1" :inactive-value="0"
                        @change="handleEnable(slotData.data)">
    </el-switch>
</template>

那为什么会出现都是0的情况呢?

是这样的,后端传值传的是数字类型的值,然后在匹配的时候vue发现匹配不上因为前端在寻找字符串类型的0,1然后,它发现匹配不上默认给了一个值也就是字符串的0,绑定到我们的变量上了。。。

好坑,发现前端太差了,还是要补习功课

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值