# 2.- Formas de realizar Filter Vue

# Crear un entorno Vue.

 $ vue create nombre_de_la_carpeta

# Vue-axios

Siempre verificar que versión de Vue utilizan https://www.npmjs.com/package/vue-axios (opens new window)

npm install --save axios vue-axios

En el documento main.js copiamos estas lineas

import axios from 'axios'
import VueAxios from 'vue-axios'
 
Vue.use(VueAxios, axios)

# Realizando filter v1

Código para el template

    <template>
      <div>
         <img class="logo" src="@/assets/logo.png" alt="">
         <h1>Characters</h1>
         <input 
         type="text" 
         v-model="search" 
         placeholder="Search">
         <div class="content">
           <div class="content-characters" 
           v-for="character in filterSearch" 
           :key="character.id">
           <div class="character">
             <img :src="character.image" alt="">
           <div class="info-character">
             <h2> {{ character.name}}</h2>
             <h4> {{ character.species}}</h4>
             <h4> {{ character.status}}</h4>
           </div>
           </div>
       </div>
     </div>
    </div>
  </template>

Código para el Script

<script>
// @ is an alias to /src
import axios from 'axios'

export default {
  name: 'app',
  components: {
  },
  data(){
    return {
      search: '',
      characters: []
    }
  },
  mounted(){
    this.getTodos();
  },
  methods: {
    getTodos(){
      axios
      .get('https://rickandmortyapi.com/api/character/')
      .then(res => {
        (this.characters = res.data.results)
      })
      .catch(e => {
        console.log(e)
      })
    }
  },
  computed: {
    filterSearch(){
      return this.characters.filter((character) => {
        return character.name.toLowerCase().includes(this.search.toLowerCase())
      })
    }
  },
 

}
</script>

Ejemplo de lo realizado: https://rickandmorty-api-romacode.netlify.app/ (opens new window)

Repositorio Github: https://github.com/romadesign/app-rick-and-morty (opens new window)