有个关于vue可能比较常见的问题,我却有点不知道怎么处理,想请大家帮忙看下 ,谢谢?

<u--input
@change="discount_change($event,index)"
@blur="discount_price_blur($event,index)" 
v-model="item.discounts">
</u--input>

上面是条循环的数据,item.discounts后端传过来的可能是一个空字符串,但是我需要判断如果是空字符串,就改为0,否则就还是item.discounts

我用三元表达式改为v-model="item.discounts == ''? 0 : item.discounts"
发现v-model里写三元表达, 会报错,请问这种情况,如何处理比较好?谢谢

阅读 2.7k
3 个回答

最科学的方法是,拿到数据后,立刻处理一下不和格的数据,类似这样

const data = await getTestData()

data.forEach(function (item) {
    item.discounts = item.discounts || 0
    item.status = item.status === 1 ? true : false
})

// 最后才给vue使用
this.list = data

v-model比较特殊,因为这儿不仅要读取item.discounts, 而且当你改变input的值的时候,还会自动改变item.discounts,你写成三元表达式,它就没法赋值了,所以就报错了。

正确做法是仍然定义v-model="item.discounts",只是在你读取到数据x后,直接改变

item.discounts=x===''?0:x;

让后端解决吧,这是后端的责任

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题