Vue.js 2 & Axios - Фильтрация API для функции поиска - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь отфильтровать коллекцию фильмов, которые я извлекаю, используя axios. Это так, я могу сравнить его со строкой поиска для функции поиска. Все работает нормально, за исключением того, что при использовании свойства computed оно возвращает Cannot read свойство 'filter' of undefined ", но когда я проверяю инструмент vue dev, оно говорит, что свойство computed содержит массив фильмов, которые на самом деле не складываются. Код следующим образом.

   created(){
        this.fetchFilms();
    },

    methods:{

        fetchFilms(page_url){
            let vm = this;
            // storing the page url
            page_url = page_url || '/api/films'
            axios.get(page_url)
            .then(response => response)
            .then(response => {
            this.films = response.data;
            vm.makePagination(response.meta, response.links);
            })
            .catch(err => console.log(err));
        },

        makePagination(meta,links){
            let pagination = {
                current_page: this.films.meta.current_page,
                last_page: this.films.meta.last_page,
                next_page_url: this.films.links.next,
                prev_page_url: this.films.links.prev
            }

            this.pagination = pagination;
        }
    },

computed: {
    filteredFilms () {
        return this.films.data.filter((film) => {
            return film.film_name.toLowerCase().match(this.searchString.toLowerCase())
        })

},

}

Вот как данные возвращаются

films:Object
data:Array[10]
links:Object
meta:Object

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 27 апреля 2018

Вы, вероятно, получаете доступ к filteredFilms до выполнения запроса. Я не вижу кода для ожидания запроса. Вы можете filteredFilms проверить, есть ли данные, и вернуть пустой список, если их нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...