Vue - 带有多个复选框的输入

Posted

技术标签:

【中文标题】Vue - 带有多个复选框的输入【英文标题】:Vue - input with multiple checkboxes 【发布时间】:2017-06-08 20:56:24 【问题描述】:

我正在渲染一些基于数组的复选框,并使用数据属性作为v-model。我正在使用 Vue2。

但是,由于某种原因,当v-model 的值等于 1 时,我最终检查了所有复选框(我猜它会将其视为布尔值而不是数字)。

我试过v-model.number - 没有任何运气。我做错了什么?

我的模板:

<div v-for="category in categories">
  <input
    type="checkbox"
    v-model.number="item.category"
    :id="'category_' + category.id"
    :value="category.id"
    @change="save"
  />
  <label> item.category  :  category.id </label>
</div>

模型数据(item.category):

1

类别:

[
  
    "id": 2,
    "name": "news Category 0"
  ,
  
    "id": 7,
    "name": "news Category 1"
  ,
  
    "id": 12,
    "name": "news Category 2"
  ,
  
    "id": 17,
    "name": "news Category 3"
  ,
  
    "id": 22,
    "name": "news Category 4"
  ,
  
    "id": 27,
    "name": "news Category 5"
  ,
// other values
]

屏幕截图(我添加了 item.category 和 category.id 作为标签文本以使其更清晰):

【问题讨论】:

【参考方案1】:

当您使用Multiple checkboxes 时,您必须在v-model 中提供一个数组,因此您的item.category 必须是一个数组:[1]

查看工作小提琴:https://jsfiddle.net/mimani/y36f3cbm/

var demo = new Vue(
  el: '#demo',
  data() 
    return 
      categories: [
        "id": 2,
        "name": "news Category 0"
      ,  
        "id": 92,
        "name": "news Category 8"
      , 
        "id": 97,
        "name": "news Category 9"
      ],
      item: 
        category: [1]
      
    ;
  
)

【讨论】:

以上是关于Vue - 带有多个复选框的输入的主要内容,如果未能解决你的问题,请参考以下文章

如何在Vue js中绑定带有芯片的复选框(双向绑定)

Vue.js 复选框组件多个实例

使用 laravel 和 vue js 从 mysql 数据库中检查带有逗号分隔值的复选框

在多个复选框中保留响应数据(Vue.js)

带有文本字段的多个复选框

选择带有数据表的多个复选框