Я думаю, что ваша проблема в том, что вы пытаетесь установить Свойство массива results
, чтобы Vue не мог выбрать обновление ваших данных.Вместо этого вы должны создать новый массив из проанализированной страницы и установить его как this.results = newResultsArray
:
loadBlogs: function() {
axios.get(URL).then(({data}) => {
const $ = cheerio.load(data)
const newResults = $('.post').map((i, element) => {
const title = $(element).children('.content-inner .post-header .post-title a').text()
const datePosted = $(element).children('.content-inner .post-header .post-meta .posted-on a .published').text()
return {
id: i + 1,
title: title,
datePosted: datePosted
}
})//.toArray() // this toArray call might be needed, I haven't worked with cheerio for some time and not sure whether it returns array or its own collection type like jQuery does
this.results = newResults;
}).catch(console.error)
}
Также это должно быть еще проще, если вы просто используете this.results.push({...})
вместо присвоения свойства this.results[i] = {...}
(но этообычно проще обрабатывать целые массивы, а не вставлять и удалять их части, хотя оба являются жизнеспособными решениями в их соответствующих случаях использования.
И, пожалуйста, ознакомьтесь с этой документацией о , как Vue обрабатывает реактивныеобновляет , описывает проблему, с которой вы столкнулись.