Я хочу добавить функциональность для окна поиска для поиска текущих карточек на странице для введенного фильма, но все другие примеры и решения, которые я нашел в Интернете, их решения, похоже, не работают для меня.
Это тело HTML:
<body>
<div id = "app">
<div class = "row pt-3">
<div class = "col">
<input type = "text" class = "form-control" v-model = "search" placeholder = "Search Movies">
</div>
<div class = "col-md-auto">
<button type = "button" class = "btn btn-primary" id = "search"> Go! </button>
</div>
</div>
<div class = "row text-center pt-3">
<div v-for = "movie in movies" class = "card" style = "width: 18rem;">
<img :src = "movie.Poster" class = "card-img-top" alt = "img">
<div class = "card-body">
<h5 class = "card-title">{{ movie.Title }}</h5>
<p class = "card-text">{{ movie.Year }}</p>
<a href = "#" class = "btn btn-primary">View Movie</a>
</div>
</div>
</div>
</div>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.2/vue.js"></script>
<script src = "https://unpkg.com/axios/dist/axios.min.js"></script>
<script src = "main.js"></script>
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity = "sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin = "anonymous"></script>
</body>
И это файл JS:
new Vue({
el: '#app',
data: {
movies: [],
search: '',
},
created() {
var vm = this
axios.get('https://www.omdbapi.com/?s=Harry+Potter&apikey=a9018efb')
.then(function(response) {
vm.movies = response.data.Search
})
}
})
Вместо того, чтобы зацикливаться на movies
, создайте вычисляемый набор отфильтрованных данных для зацикливания. Например, если вы искали заголовки:
computed: {
searchedMovies() {
return this.movies.filter(movie => {
return movie.Title.toLowerCase().includes(this.search.toLowerCase());
})
}
}
Цикл над этим:
<div v-for = "movie in searchedMovies" :key = "movie.Title">
...
</div>
Если вы ничего не искали, это вернет все фильмы.
Я заставил его работать с кнопкой из вашего ответа, спасибо, хотя это очень помогло;)