在VueJS中取消选中带有标签的CheckBox

Kam*_*ara 3 html checkbox state vue.js vuejs2

我试图取消选中使用VueJs中的标签选中的复选框。

演示:

new Vue({
  el: '#app',
  data: {
    checkedNames: [],
    checkedName: true
  },
  methods: {
    uncheck: function() {
      this.checkedName = !this.checkedName;
    }
  }
})
Run Code Online (Sandbox Code Playgroud)
li.badge.badge-primary {
  cursor: pointer;
  margin: 5px;
  font-size: 100%;
}

ul.checkboxes {
  list-style: none;
}

ul.tags {
  margin-top: -110px;
  margin-left: 85px;
}
Run Code Online (Sandbox Code Playgroud)
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>

<div id='app'>
  <ul class="checkboxes">
    <li><input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
      <label for="jack">Jack</label></li>

    <li><input type="checkbox" id="john" value="John" v-model="checkedNames">
      <label for="john">John</label></li>

    <li><input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
      <label for="mike">Mike</label></li>
  </ul>
  <br/>
  <ul class="tags">
    <li @click="uncheck" class="badge badge-pill badge-primary" v-for="checkedName in checkedNames">
      {{ checkedName }}
    </li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

在这里,我无法使用上面的代码中显示的标签来取消选中所选复选框。

刚开始使用VueJS,帮助不胜感激。

acd*_*ior 6

checkedNameas参数传递给方法并过滤数组,而不是分配变量。

首先,将checkedName参数添加到uncheck

<li @click="uncheck(checkedName)" ... v-for="checkedName in checkedNames">
Run Code Online (Sandbox Code Playgroud)

然后使用该参数从checkedNames数组中删除该名称:

this.checkedNames = this.checkedNames.filter(name => name !== checkedName);
Run Code Online (Sandbox Code Playgroud)


下面的演示。

<li @click="uncheck(checkedName)" ... v-for="checkedName in checkedNames">
Run Code Online (Sandbox Code Playgroud)
this.checkedNames = this.checkedNames.filter(name => name !== checkedName);
Run Code Online (Sandbox Code Playgroud)
new Vue({
  el: '#app',
  data: {
    checkedNames: [],
    checkedName: true
  },
  methods: {
    uncheck: function(checkedName) {
      this.checkedNames = this.checkedNames.filter(name => name !== checkedName);
      //this.checkedName = !this.checkedName;
    }
  }
})
Run Code Online (Sandbox Code Playgroud)