하나 : https://jsfiddle.net/wostex/63t082p2/28/
주요 아이디어 : 당신이 아이들을 처리하려면 부모 상태에서 상태, 당신은 아이에서 '변화 속성'이벤트를 방출하고 부모 내부 계산을 처리해야합니다. 예제에서는 부모 인덱스에 활성 Li 인덱스를 저장하고 현재 인덱스가 활성 상태이면 자식 부울 속성 active
을 보냅니다. 또한
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
<ul>
<my-list-item :title="item.title"
:content="item.content"
v-for="(item, index) in items"
:active="index === activeLiIndex"
:index="index"
:key="item.title"
@newactive="activeLiIndex = $event"
></my-list-item>
</ul>
</div>
<script type="text/x-template" id="my-list-item">
<li :class="{'active': active}" @click.stop="toggleRowActive">
<h1>{{title}}</h1>
<p>{{content}}</p>
</li>
</script>
new Vue({
el: '#app',
data: {
items: [
{title: 'Title 1', content: 'Content 1'},
{title: 'Title 2', content: 'Content 2'}
],
activeLiIndex: null
},
components: {
'my-list-item': {
template: '#my-list-item',
props: ['title', 'content', 'active', 'index'],
methods: {
toggleRowActive() {
this.$emit('newactive', this.index);
}
}
}
}
});
, 당신이 볼 수 있듯이, v-for
은 귀하의 경우 하위 구성 요소 자체에 사용됩니다. 자신의 예에서는 보통 li
개 대신 ul
개 태그를 생성했습니다.
나는이 질문을 발견해서 너무 기쁩니다. 한 번에 하나의 항목에 대해서만 조건부 클래스를 다루기 때문에, 내가 원했던 것을 문서에서 다루었습니다. 나는 이것이 jquery가하는 것이 더 낫다면 거의 궁금해하고 있었다! –