반응형
v-for의 요소에 액세스하는 방법
나는 가지고 있다v-for
라고 하는 어레이를 통해 반복 루프projects
...라는 이름의 다른 어레이가 있습니다.selectedProjects
. a의 경우project
요소가 클릭되면 다음 클래스를 추가합니다.selected
그 특정 요소에 대한 추가와 더불어project.id
대한 그 지수의 특성selectedProjects
제가 모든 문제를 잘못 짚고 있는 것 같습니다.이것을 실현하는 「vue」방법이 있을까요?
<!-- The template -->
<div v-for="project in projects" class="project" @click="">
<p><i class="fa fa-folder"></i>{{project.name}}</p>
</div>
구성 요소의 데이터:
data: function(){
return {
projects: [...],
selectedProjects: [],
}
},
키를 추가하겠습니다.selected
프로젝트 객체에 대해 설명합니다.
템플릿은 다음과 같습니다.
<div v-for="project in projects" class="project" :class="{selected: project.selected}" @click="select(project)">
<p><i class="fa fa-folder"></i>{{project.name}}</p>
</div>
그리고 추가select
필요한 경우 이벤트selectedProjects
어떤 이유로든 데이터에 두 개의 배열을 갖는 대신 계산된 함수를 사용할 수 있습니다.
methods: {
select(project) {
project.selected = true
}
},
computed: {
selectedProjects () {
return this.projects.filter(project => project.selected)
}
}
올바른 아이디어입니다.클릭 핸들러와 $ref만 추가하면 됩니다.
@click="onProjectClicked(project.id)" ref="`project${project.id}`"
또, 실장 방법:
methods: {
onProjectClicked(id) {
this.selectedProjects.push(id)
this.$refs[`project${id}`].$el.addClass('selected')
}
}
이를 위해 Vue의 동적 클래스 바인딩을 사용할 수 있습니다.예를 들어, 각 프로젝트에는 다음과 같은 속성이 있다고 합시다.isSelected
(디폴트로는 false).그러면 다음 작업을 수행할 수 있습니다.
<div v-for="project in projects" class="project" :class="{selected: project.isSelected}" @click="handleClick(project)">
<p><i class="fa fa-folder"></i>{{project.name}}</p>
</div>
그럼 대본에...
methods: {
handleClick(project) {
project.isSelected = !project.isSelected
if (project.isSelected) {
this.selectedProjects.push(project.id)
} else {
this.selectedProjects.splice(this.selectedProjects.indexOf(project.id), 1)
}
}
}
언급URL : https://stackoverflow.com/questions/52904711/how-can-i-access-elements-in-v-for
반응형
'programing' 카테고리의 다른 글
루트가 갱신될 때마다 함수를 호출합니다. (0) | 2022.07.29 |
---|---|
돛과 함께 vue.js를 사용하는 방법 js (0) | 2022.07.29 |
vuex에서 중첩된/복잡한 개체 처리 (0) | 2022.07.29 |
리스트에서 요소의 발생 횟수를 카운트하는 방법 (0) | 2022.07.29 |
Vuex Getters는 참조(어레이, 객체 등)를 상태로 반환합니까? (0) | 2022.07.29 |