v-for를 사용하여 어레이의 일부만 반복하는 방법
다음과 같은 배열이 있다.
return {
items: [
{active: true, text: 'text1'},
{active: true, text: 'text2'},
{active: true, text: 'text3'},
{active: true, text: 'text4'},
{active: true, text: 'text5'}
...
]
}
다음을 사용하여 DOM에 반복하고 싶다.v-for
(쉽게) 그러나 두 개의 템플릿(템플릿1의 어레이 처음 3개 요소와 템플릿2의 나머지 요소)으로 반복하고 싶다.
template1:
<template v-for="item in items">
first 3 elements:
{{item}}
</template>
템플릿2:
<template v-for="item in items">
the rest of elements:
{{item}}
</template>
어떻게 수정해야 하는가?v-for
이 일을 성사시키기 위해?
원본에 기반하여 두 개의 계산된 속성을 명시적으로 만들 수 있음items
배열 또는 슬라이스만 사용(예:
<template v-for="item in items.slice(0, 3)">
, 그리고
<template v-for="item in items.slice(3)">
N.B. 위의 두 경우 모두 다음과 같이 가정한다.items
항상 정의되고 항상 배열되어 있다.인라인 어프로치(인라인 어프로치)를 원하신다면.items
정의되지 않았을 수도 있고, 그러면 당신은(items || []).slice()
.
계산된 속성 접근 방식을 사용하면 다음과 같은 것을 정의할 수 있다.
computed: {
itemsHead() {
return this.items ? this.items.slice(0, 3) : [];
},
itemsTail() {
return this.items ? this.items.slice(3) : [];
}
}
그러면 참고하십시오.itemsHead
, 그리고itemsTail
네 템플릿에 말이야.
조금 더 복잡한 물체를 가지고 있다면, 예를 들어 조건이 진실이라면 무언가를 렌더링하려고만 하는 외부 루프와 내부 루프가 있고 내부 루프에 있는 것처럼 계산된 방법을 사용할 수 없는 경우.루프 내부 계산 방법에 대해 사실이 아니라면 수정하십시오.
그래서 제 해결책은 다음과 같다.
<div v-for="fooparent in fooparentarray">
<template v-for="foo in fooparent.foos">
<div v-if="foo.someproperty === 1">{{foo.someproperty}}</div>
</template>
</div>
템플릿이 렌더링되지 않기 때문에 조건을 충족하지 않는 배열 요소에 렌더링되는 것은 없을 것이다.그래서 div는 조건이 충족될 때만 렌더링된다.
참조URL: https://stackoverflow.com/questions/48987214/vuejs-how-to-iterate-only-part-of-array-using-v-for
'Programing' 카테고리의 다른 글
읽기()와 recv()의 차이점과 보내기()와 쓰기()의 차이점은 무엇인가? (0) | 2022.05.04 |
---|---|
Java에서 개인 정적 변수의 용도는 무엇인가? (0) | 2022.05.04 |
역추적()/backtrace_symbols() 기능 이름을 인쇄하는 방법? (0) | 2022.05.04 |
알 수 없는 작업: Vuex를 사용하여 카운터가 증가하지 않음(VueJS) (0) | 2022.05.04 |
들여쓰기 #defines (0) | 2022.05.04 |