프로젝트/영화 검색 (Vue)

Vue 프로젝트 Search - 필터

IT Blue 2021. 8. 1. 13:50

 

Vue 프로젝트 Search - 필터

 

 

Vue 프로젝트 Search - 필터 순서

 

1. /src/components/Search.vue 생성

<!-- Search.vue -->

<template>
  <div class="container">
    <input
      v-model="title"
      class="form-control"
      type="text" 
      placeholder="Search for Movies, Series & more" />
    <div class="selects">
      <select
        v-for="filter in filters"
        v-model="$data[filter.name]"
        :key="filter.name"
        class="form-select">
        <option 
          v-if="filter.name === 'year'"
          value="">
          All Years
        </option>
        <option
          v-for="item in filter.items"
          :key="item">
          {{ item }}
        </option>
      </select>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      title: '',
      type: 'movie',
      number: 10,
      year: '',
      filters: [
        {
          name: 'type',
          items: ['movie', 'series', 'episode']
        },
        {
          name: 'number',
          items: [10, 20, 30]
        },
        {
          name: 'year',
          items: (() => {
            const years = []
            const thisYear = new Date().getFullYear() // 올해의 년도 반환
            for (let i = thisYear; i >= 1985; i -= 1) {
              years.push(i)
            }
            return years
          })()
        }
      ]
    }
  }
}
</script>
<style lang="scss" scoped>
.container {
  display: flex;
  > * {
    margin-right: 10px;
    font-size: 15px;
    &:last-child {
      margin-right: 0;
    }
  }
  .selects {
    display: flex;
    select {
      width: 120px;
      margin-right: 10px;
      &:last-child {
      margin-right: 0;
      }
    }
  }
}
</style>

 

2. /src/routes/Home.vue 연결

<!-- Home.vue -->

<template>
  <Headline />
  <Search />
</template>
<script>
import Headline from '~/components/Headline'
import Search from '~/components/Search'

export default {
  components: {
    Headline,
    Search
  }
}
</script>

 

결과

 


 

참고

https://getbootstrap.com/docs/5.0/forms/form-control/

 

Form controls

Give textual form controls like

s and

 

https://getbootstrap.com/docs/5.0/forms/select/

 

Select

Customize the native