Усечение обработано html в vuejs - PullRequest
2 голосов
/ 19 января 2020

Я использую v- html для удаления тегов html, но все еще показываю обработанные html. Проблема в том, что я хочу показать только 200 символов. Я могу создавать усеченные скрипты, но v- html, похоже, не принимает фильтры. Как мне этого добиться?

Например:

// This
<div class="excerpt" v-html="body_html"></div>

// Into this
<div class="excerpt" v-html="body_html | truncate(200)"></div>

Я попытался создать фильтр стриптага и обрезать + убрать теги обычного <p>, но он не обработал html. Другими словами, я получил HTML обратно без жирного, курсива и т. Д. c

Например, вот так: (не мой предпочтительный метод, если вы не можете найти способ улучшить его) так что я все еще могу получить HTML.

    <div>{{strippedContent | truncate(200)}}</div>

    Vue.filter("truncate", function(value, length) {
        if (!value) return "";
        value = value.toString();
        if (value.length > length) {
            return value.substring(0, length) + "...";
        } else {
            return value;
        }
    });

    export default {
        data() {
            return {
                body_html: this.post.body_html
            };
        },
        computed: {
            strippedContent() {
                let regex = /(<([^>]+)>)/gi;
                return this.body_html.replace(regex, "");
            }
        }
    };

1 Ответ

1 голос
/ 19 января 2020

Можете ли вы попробовать другой (локальный) способ из документов https://vuejs.org/v2/guide/filters.html?

Глобальная (по-вашему) регистрация фильтра должна быть сделана до создания экземпляра Vue. Вы можете проверить это?

Upd. Также есть ошибки при совместной работе v- html и фильтров:

  1. "v- html не работает с фильтрами" https://github.com/vuejs/vue/issues/4352
  2. "Vue фильтр не работает на v- html" https://github.com/vuejs/vue/issues/6056

РЕШЕНИЕ

В шаблоне замените v- html строка с

<div :inner-html.prop="body_html | truncate(250)"></div>

Полосой * фильтр 1034 * больше не нужен

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