简体   繁体   English

将对象绑定到Vuejs中的复选框值

[英]Binding object to checkbox value in Vuejs

So normal checkboxes in vuejs allows you to bind a model to it. 因此,vuejs中的普通复选框允许您将模型绑定到该模型。 When this model has the values from checkboxes pre filled, those particular checkboxes appear checked. 当该模型的复选框中的值预先填充时,这些特定的复选框将显示为已选中。

<tr v-for="user in users">
  <td>{{ user.name }}</td>
  <td>
    <input type="checkbox" v-model="selectedUsers" v-bind:value="{ id: user.id }">
  </td>
  <td>
    <input type="checkbox" v-model="selectedUsers" value="{{ user.id }}">
  </td>
</tr>

However you don't get the same behaviour when you bind the checkbox value to an object. 但是,将复选框值绑定到对象时,不会得到相同的行为。

Following is the snippet: 以下是代码段:

 new Vue({ el: '#app', data: { users: [{ "id": "1", "name": "Shad Jast", "email": "pfeffer.matt@yahoo.com" }, { "id": "2", "name": "Duane Metz", "email": "mohammad.ferry@yahoo.com" }, { "id": "3", "name": "Myah Kris", "email": "evolkman@hotmail.com" }, { "id": "4", "name": "Dr. Kamron Wunsch", "email": "lenora95@leannon.com" }, { "id": "5", "name": "Brendon Rogahn", "email": "verlie.buckridge@yahoo.com" }], selectedUsers: [{ "id": "1" }, "1"] } }) 
 <script src="https://cdn.jsdelivr.net/vue/latest/vue.js"></script> <div id="app"> <h4>User</h4> <div> <table> <tr> <th>Name</th> <th></th> <th></th> </tr> <tr v-for="user in users"> <td>{{ user.name }}</td> <td> <input type="checkbox" v-model="selectedUsers" v-bind:value="{ id: user.id }"> </td> <td> <input type="checkbox" v-model="selectedUsers" value="{{ user.id }}"> </td> </tr> </table> </div> <span>Selected Ids: {{ selectedUsers | json }}</span> </div> 

I have done it the following way, please suggest better ways, if any: 我已按照以下方式进行操作,请提出更好的方法(如果有):

 new Vue({ el: '#app', data: { users: [{ "id": "1", "name": "Shad Jast", "email": "pfeffer.matt@yahoo.com" }, { "id": "2", "name": "Duane Metz", "email": "mohammad.ferry@yahoo.com" }, { "id": "3", "name": "Myah Kris", "email": "evolkman@hotmail.com" }, { "id": "4", "name": "Dr. Kamron Wunsch", "email": "lenora95@leannon.com" }, { "id": "5", "name": "Brendon Rogahn", "email": "verlie.buckridge@yahoo.com" }], previousUsers: [{ "id": "2" }, { "id": "5" }, "1", "5"], updatedUsers: [] }, methods: { check: function(user_id) { var checked = false; for (i = 0; i < this.previousUsers.length; i++) { if (this.previousUsers[i].id == user_id) { this.previousUsers.splice(i, 1) return true } return false; } } } }) 
 <script src="https://cdn.jsdelivr.net/vue/latest/vue.js"></script> <div id="app"> <h4>User</h4> <div> <table> <tr> <th>Name</th> <th></th> <th></th> </tr> <tr v-for="user in users"> <td>{{ user.name }}</td> <td> <input type="checkbox" v-model="updatedUsers" v-bind:value="{ id: user.id }" checked="{{check(user.id)}}"> </td> <td> <input type="checkbox" v-model="updatedUsers" value="{{ user.id }}"> </td> </tr> </table> </div> <span>Selected Ids: {{ updatedUsers | json }}</span> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM