Vue.js 2 автоэкранирование HTML

1

Я использую Vue 2 js с Laravel 5.5.

У меня есть компонент данных - текст уценки. И у меня есть экземпляр vue

new Vue({
        el : '#lesson_edit',
        data :  {
            lesson : {
                body : '{{ $lesson->body }}'
           }
        }
    });

Строка тела имеет символ ">". Но после присвоения ot экранов <.

Проблема следующая: у меня есть компонент vue, который cconvertts markdown to html

    <template>
        <div v-html="parsedBody"></div>
    </template>


<script>

    export default {
        props : ['body'],
        mounted() {
            console.log('Component mounted.')
        },
        computed : {
            parsedBody(){
                return marked(this.body, { sanitize: true })
            }
        }
    }
</script>

После назначения тела и unescpe, я не получаю действительного преобразования разметки.

Что я должен делать?

Добавить какой-нибудь компонент? Отказаться от этих символов в экземпляре Vue? Или что-то еще... Просьба, помощь.

  • 0
    происходит преобразование из '>' в '<' до того, как оно будет присвоено vue или после? Кроме того, вы пробовали {!! !!} вместо {{}} для отображения необработанной строки, а не экранированной строки?
Теги:
vuejs2
laravel-5
laravel-5.5
markdown

1 ответ

2
Лучший ответ

Это лезвийный движок на стороне сервера, который выходит из html, а не Vue. Вам придется использовать {!! $lesson->body !!} {!! $lesson->body !!} вместо {{ $lesson->body }}.

  • 0
    Yeap. это помогает.
  • 0
    Вы можете принять этот ответ, если это решение работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню