我在表格中顯示用戶列表,每行都有一個複選框以選擇用戶,複選框值是用戶的ID。選定的ID依次顯示在表格下方的範圍內。選中所有複選框vuejs
如何選中所有複選框並取消選中所有複選框,然後點擊表格標題中的「全選」複選框?我是否與DOM進行交互以做到這一點或通過vue對象,我認爲它應該是後者,但是很不確定如何處理看起來很容易的任務?!任何幫助,將不勝感激!
HTML
<div id="app">
<h4>Users</h4>
<div>
<table>
<tr>
<th>Name</th>
<th>Select <input type="checkbox" @click="selectAll"></th>
</tr>
<tr v-for="user in users">
<td>{{ user.name }}</td>
<td><input type="checkbox" v-model="selected" value="{{ user.id }}"></td>
</tr>
</table>
</div>
<span>Selected Ids: {{ selected| json }}</span>
</div>
使用Javascript/Vuejs
new Vue({
el: '#app',
data: {
users: [
{ "id": "1", "name": "Shad Jast", "email": "[email protected]",
{ "id": "2", "name": "Duane Metz", "email": "[email protected]"},
{ "id": "3", "name": "Myah Kris", "email": "[email protected]"},
{ "id": "4", "name": "Dr. Kamron Wunsch", "email": "[email protected]"},
{ "id": "5", "name": "Brendon Rogahn", "email": "[email protected]"}
],
selected: []
},
methods: {
selectAll: function() {
// ?
}
}
})
問題:1)全選; 2)取消選擇一個項目。 SelectAll複選框應該變爲未選中狀態。 – Sigma
@Sigma良好的捕獲,我給小提琴增加了一個修復,也許不是一個很好的解決方案,但它的工作原理。隨意發佈您自己的解決方案。 – haakym
在方法selectAll中,它應該是「if(this.allSelected)」而不是「if(!this.allSelected)」。沒有必要使用! 。 –