반응형
v-model 특성을 확인란에 추가하면 모두 확인 작업이 중지됨
v-model을 사용하여 어레이의 각 확인란 값을 가져오려고 하면 모두 확인 기능이 작동을 중지합니다.stackoverflow를 포함한 여러 포털에서 많은 질문을 읽었는데, 사람들은 v-model이:체크된 특성에서는 작동하지 않는다고 합니다.이 속성은 이해하지만 이를 작동시키기 위한 솔루션/대체 코드를 찾을 수 없습니다.
내가 시도한 첫 번째 코드는 첫 번째 체크박스를 사용하여 모든 체크박스를 선택하는 것이었다.이거 잘 되네.아래 코드:
new Vue({
el: "#app",
data: {
selectAll:false
},
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<label>
<input type="checkbox" v-model="selectAll">
Select all
</label>
<br>
<label>
<input type="checkbox" :checked="selectAll" value="Item 1">
Item 1
</label>
<br>
<label>
<input type="checkbox" :checked="selectAll" value="Item 2">
Item 2
</label>
<br>
<label>
<input type="checkbox" :checked="selectAll" value="Item 3">
Item 3
</label>
</div>
두 번째 시도된 코드는 배열 내의 각 체크박스의 값을 가져오는 것이었는데, 이 경우 '모두 선택'이 자동으로 작동을 중지합니다.아래 코드:
new Vue({
el: "#app",
data: {
selectAll:false,
eachCheckbox: [],
},
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<label>
<input type="checkbox" v-model="selectAll">
Select all
</label>
<br>
<label>
<input type="checkbox" :checked="selectAll" value="Item 1" v-model="eachCheckbox">
Item 1
</label>
<br>
<label>
<input type="checkbox" :checked="selectAll" value="Item 2" v-model="eachCheckbox">
Item 2
</label>
<br>
<label>
<input type="checkbox" :checked="selectAll" value="Item 3" v-model="eachCheckbox">
Item 3
</label>
<br>
Selected checkbox values: {{eachCheckbox}}
</div>
난 이걸 어떻게 해야 할지 모르겠어.누가 좀 도와줄래요?
사용하다Vue.set
API 호출이 완료되면 체크박스 배열에 개체를 만듭니다.
이것은 2.5초 걸리는 모의 비동기 API 콜을 나타내고 있습니다.
new Vue({
el: '#app',
data () {
return {
loading: false,
checkall: false,
checkboxes: []
}
},
methods: {
toggleAll () {
this.checkall = !this.checkall
this.checkboxes.forEach(c => {
c.checked = this.checkall
})
}
},
watch: {
checkboxes: {
deep: true,
handler: function () {
this.checkall = this.checkboxes.every(c => c.checked)
}
}
},
mounted () {
// simulate an async api call which takes 2.5 seconds to complete
this.loading = true
setTimeout(() => {
Array.from(Array(3), (c, i) => ({ checked: false, text: `Option ${i + 1}` })).forEach((c, i) => {
Vue.set(this.checkboxes, i, c)
})
this.loading = false
}, 2500)
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<input type="checkbox" @click="toggleAll" v-model="checkall"/> Check All<br/>
<div v-for="(c, i) in checkboxes" :key="i">
<input type="checkbox" v-model="c.checked"/>{{ c.text }}<br/>
</div>
<p v-if="!loading">Checked: {{ checkboxes.filter(c => c.checked).map(c => c.text).join(',') }}</p>
<p v-else>Fetching data...</p>
</div>
전에도 같은 문제에 직면했지만 좋은 해결책을 찾지 못했지만, 다음과 같은 것을 시도해 보았습니다.
new Vue({
el: "#app",
data: {
selectAll: false,
eachCheckbox: [],
},
methods: {
selectAllItems() {
this.selectAll ? this.eachCheckbox = ["Item 1", "Item 2", "Item 3"] : this.eachCheckbox = [];
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<label>
<input type="checkbox" v-model="selectAll" @change="selectAllItems">
Select all
</label>
<br>
<label>
<input type="checkbox" :checked="selectAll" value="Item 1" v-model="eachCheckbox">
Item 1
</label>
<br>
<label>
<input type="checkbox" :checked="selectAll" value="Item 2" v-model="eachCheckbox">
Item 2
</label>
<br>
<label>
<input type="checkbox" :checked="selectAll" value="Item 3" v-model="eachCheckbox">
Item 3
</label>
<br> Selected checkbox values: {{eachCheckbox}}
</div>
언급URL : https://stackoverflow.com/questions/53686617/check-all-stops-working-when-i-add-v-model-attribute-to-the-checkboxes
반응형
'programing' 카테고리의 다른 글
복제된 라우터 링크는 자 라우터 뷰에 로드되어야 하지만 메인 라우터 뷰도 새로고침됩니다. (0) | 2022.07.13 |
---|---|
nuxt vuex에서 정의되지 않은 커밋 (0) | 2022.07.13 |
배경 클릭 시 모달 닫힘 방지 [Vuejs] (0) | 2022.07.13 |
free()는 errno를 설정합니까? (0) | 2022.07.13 |
컴포넌트 메서드를 모사하는 방법 (0) | 2022.07.13 |