vue中传多选项数据到后台(判断数组中是否存在该项,存在则删除,不存在则添加)

先看一下要实现的目标。如下图所示,一室、二室.....五室以上为可选项,及点一次选中它,再点为取消。最后选完后,点确定时,带着选中的参数到后台请求数据。


要实现这样的功能,简单点来说,可以利用JavaScript提供的方法。

if (this.bedroomNum.indexOf(id) === -1) {
  this.bedroomNum.push(id)
} else {
  this.bedroomNum.splice(this.bedroomNum.indexOf(id), 1)
}
通过indexOf(id)判断这个选中的id是否在bedroomNum数组中存在,如果不存在会返回-1,则通过push将这个id添加到这个数组中。否则就是存在的,通过splice(这个id在数组中的索引,1)删除。

来看一些VUE中具体的实现代码:

html结构中:

<ul class="searchType_bedroom" v-if="searchType === 2">
  <li @click="allBedroom">不限</li>
  <li v-for="item in bedroom" @click="change_bedroom(item.bedroom)">{{item.name}}<span :class="bedroomNum.indexOf(item.bedroom) !== -1 ? 'isSelect' : '' "></span></li>
  <li class="submit" @click="submitBedroon">确认</li>
</ul>

vue data () 中:

bedroom: [{name: '一室', bedroom: '1'},
  {name: '二室', bedroom: '2'}, {name: '三室', bedroom: '3'},
  {name: '四室', bedroom: '4'}, {name: '五室', bedroom: '5'},
  {name: '五室以上', bedroom: ''}],
 

vue methods方法中:

change_bedroom (id) {
  if (this.bedroomNum.indexOf(id) === -1) {
    this.bedroomNum.push(id)
  } else {
    this.bedroomNum.splice(this.bedroomNum.indexOf(id), 1)
  }
},

最终结果,点击选中,再点击取消。bedroom中保存我选中的数据。


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值