Konstantin18ko
@Konstantin18ko
Стоматолог

Как передать в переменную массив с JSON в VueJS?

Есть скрипт, который получает массив с JSON'ов и перебором превращает их в одиночные JSON.
transit.$root.$on('response_data', function (msg) {
            var data = msg.split('\n')
            data.pop()
            data.forEach(function (patient, id, data) {
                console.log(JSON.parse(patient))
            })
        })

В итоге получается вот такая картина:
5a457d1e379c7525429008.png
Код tameplate:
template: '<div class="card-body" v-for="result in results">' +
    '<a :href="`id/${results.id}`" class="" style="text-decoration: underline">{{ result.surName }} {{ results.firstName }} {{ results.secondName }} {{ results.dateOfBirth }}</a>' +
    '<div v-if="results.id" class="text-success">localhost/patient/id/{{ results.id }}</div>' +
    '<div v-if="results.id">выдержка из карты</div>' +
    '</div>'

Как теперь это запихнуть в переменную, которая отображает в template?
  • Вопрос задан
  • 563 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
Что такое transit - шина событий? Обращаться к $root необходимости нет.
Зачем pop делаете? Последняя строка пустая? А вдруг однажды её там не будет? Лучше использовать filter.

Попробуйте как-нибудь так:

transit.$on('response_data', msg => {
  this.results = msg.split('\n').filter(Boolean).map(n => JSON.parse(n));
});

UPD. Примерный вид рабочего варианта вашего кода. Разумеется, без запроса - просто подставляются данные в ожидаемом формате.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы