Здравствуйте. Я чрезвычайно новичок в разработке веб-приложений / JavaScript в целом.Только давал мне курсы ускоренного обучения из видео udemy за последние 4 месяца.
Для моего веб-приложения я получаю данные из базы данных через серверную часть сервера с помощью axios.У меня есть массив logRepository, куда помещаются извлеченные данные.
data() {
return {
logRepository: [],
}
},
created() {
axios.get('/myrestapiroute', {
headers: {
'Authorization': `Bearer ${this.$store.state.token}`
},
params: {
userId: this.userId
}
})
.then(res => {
const data = res.data.logs
this.dataCheck = data
for(let key in data) {
const log = data[key]
log.id = key
this.logRepository.push(log)
}
})
В моем шаблоне я использовал v-for для циклического перебора всех извлеченных элементов данных:
<div ..... v-for="(log,index) in logRepository" :key="index">
С помощьюv-for на месте, один пример того, как я отображаю свои данные как таковые в теге абзаца.Формат связан с тем, как были структурированы данные.
<p style="text-align: justify;">
{{ log.logId.jobPerformed }}
</p>
Проблема возникает, когда я пытаюсь применить стилизацию к тексту.Как вы можете видеть выше, я хотел бы использовать text-align: justify .Я также хотел оставить пробел таким, каким он был введен пользователем, используя пробел: предварительная упаковка .
(https://i.imgur.com/dwaJHT9.png)
Нопроблема заключается в том, что эти два стиля не работают вместе.Как видно на рисунке ниже, если я использую выравнивание само по себе, оно ведет себя нормально (за исключением того, что пробелы теряются). Однако, если я объединю оба text-align:justify и пробел: предварительная перенос, текст в конце выравнивается с интервалом, но выравнивается странным образом.
(https://i.imgur.com/DQSfOya.png)
Для коротких записей они начинаются со странного отступакогда начальная сторона должна быть выровнена по левому краю столбца. Проблема, как представляется, заключается не только в пустых пробелах в начале, когда я пробовал .trim (), как предложил участник.
(https://i.imgur.com/uwysk9X.png)
Я пытался настроить CSS с помощью text-align-last, text-align-start, direction: ltr, pre-tags и т. Д. Но это просто не работает должным образом. Предложения от другихНа страницах SO рекомендуется обрабатывать данныевыполняя замену строки на все \ n на br перед отображением.
Можно ли выполнить обработку для отдельных данных, полученных из v-for, перед отображением, или это нужно сделать для массива, используя вычисленныйсвойство?
Поскольку мои данные должны извлекаться из базы данных, я не понимаю, как выполнить предварительную обработку данных, поскольку размер моего массива будет динамическим и разным для каждого пользователя.
Каков наиболее оптимальный способ добиться предварительной обработки данных перед отображением в таком случае?
Это изображение ниже, как выглядит мой массив объектов (logRepository) .Формат в значительной степени обусловлен схемой mongoDB.(https://i.imgur.com/7SilcF7.png)
======= Решение =======
Я изменил переменные объекта в моем блоке .then и произвел замену строки для всех символов \ nна
тегов.
https://i.imgur.com/EtLX2tg.png
С этим моим дисплеем больше не требуется стиль "white-space: pre-wrap". Однако, поскольку я ранее использовал интерполяцию строки дляДля отображения моих данных теги
были обработаны как обычный текст.
https://i.imgur.com/zUbNZbI.png
Мне пришлось изменить теги, чтобы использовать привязку v-html для отображения данных в виде htmltext, чтобы
сработает. Разницу можно увидеть на последнем рисунке.
https://i.imgur.com/sCTsCV4.png
Спасибо за помощь в этом, так как я очень новичок в javascript.