2
으로 정렬 된 목록에서 여러 속성을 검색하는 방법, I 먼저 Lodash를 사용하여 성을 기준으로 목록을 정렬 한 다음 유형별로 분류했습니다. 이제는 배열을 필터링/검색 (올바른 단어를 모르는 경우)하고 첫 번째 또는 성의 이름 (또는 일부)이 입력 필드의 내용과 일치하는 사람들 만 표시하려고합니다.나는 사람들의 첫 번째 이름과 마지막 이름을 가진 데이터 세트를 가지고 있고 사용자가 2</p> <p>지금까지 뷰와 다음을 통해 검색 할 수있는 뷰
바닐라 JS 솔루션은 Lodash 솔루션만큼이나 감사 할 것입니다!
props: {
people: {
type: Array,
required: true
}
},
data: function(){
return {
filter: '',
people:[{
"FirstName" : "Stefan",
"LastName" : "Braun",
"Type" : "EN",
},
{
"FirstName" : "Jenny",
"LastName" : "Smith",
"Type" : "VO",
},
{
"FirstName" : "Susan",
"LastName" : "Jones",
"Type" : "EN",
}]
}
}
methods: {
matchingType: function (people, type) {
people = this.alphabeticallyOrdered(this.searchFiltered(people))
return people.filter(function (person) {
return person.Type == type
})
},
alphabeticallyOrdered: function(arr){
return _.orderBy(arr, ['FirstName', 'LastName'])
},
searchFiltered: function(arr){
filter = this.filter
return _.some(arr, _.unary(_.partialRight(_.includes, this.filter)));
}
},
template: `
<div>
<input type="text" model="filter"></input>
<div v-for="type in types" class="type" :class="type.short">
<h2 class="type-name">{{type.long}}</h2>
<div class="people">
<div v-for="person in matchingType(people, type.short)" class="person">
<div class="personal-details">
<p class="h2">{{person.FirstName}}</p>
<p class="h4">{{person.LastName}}</p>
</div>
</div>
</div>
</div>
</div>
`
@kslstn 어떻게 선택 유형? 쓰러지 다? – Bert
고마워요, 버트. 나는 이것을 시도했지만 목록이 입력 텍스트 *와 *에 의해 필터링되어야하므로 작동하지 않는다. https://codepen.io/kslstn/pen/pdXXvO 나는 시도했다. 계산 된 matchingPeople을 메소드로 이동했지만 사용자가 입력 필드 텍스트를 변경하면 업데이트되지 않습니다. https://codepen.io/kslstn/pen/JOQeEY – kslstn
완성되기 전에 이전 의견을 제출하는 것에 대해 죄송합니다. ! 귀하의 질문에 답하기 위해, 유형은 v-for에서 선택됩니다. 먼저 엔지니어 목록이 표시되고 디자이너 목록이 표시됩니다. – kslstn