vue.js: нажмите кнопку, просмотрите dom, найдите все классы с определенным именем класса и добавьте новый класс в этот список существующих классов. - PullRequest
0 голосов
/ 03 июля 2019

Итак, я использую Axios, чтобы вытащить HTML-файл, а затем перенести все в этом HTML-файле за тег <body> и добавить его к {{htmlData}} внутри элемента div в моем шаблоне

выглядит следующим образом:

<template>
     <somebutton> I click on</somebutton>
     <div id="some-container-name" v-html="htmlData">
        {{ htmlData }}
     </div>
</template>
     data: function() {
            return {
                htmlData:''
            };
        },
    methods: {
            pullView: function(html) {
                this.axios.get('http://someUrl.html').then(response => {
                    let corsHTML = response.data;
                    let htmlDoc = (new DOMParser()).parseFromString(corsHTML, "text/html");
                    this.htmlData = htmlDoc.documentElement.getElementsByTagName('body')[0].innerHTML;
                })
            },

У пользователя есть возможность нажать на кнопку - код затем просматривает dom и затем добавляет имя класса к каждому существующему you-can-edit-me имени класса из htmlдокумент, который вытащен через Axios.

Имеет ли это смысл?

Из-за того, как я добавляю этот контент, у меня нет возможности привязать что-либо к этому контенту с помощью директивы Vue: bind.Мой Google-фу подвел меня и нуждается в некоторых предложениях.Можно ли отредактировать this.htmlData и сделать преобразование в этом объекте, а затем я думаю, повторно отрендерить данные ??

Я не хочу загрязнять свою работу с помощью jQuery и спрашиваю себя, не сделал ли кто-нибудь еще что-нибудь подобное?

1 Ответ

2 голосов
/ 03 июля 2019

Так как у вас уже есть разбор htmlDoc:

for (const element of htmlDoc.querySelectorAll('.you-can-edit-me')) {
  element.classList.add('additional-css-class');
}

внутри вашего pullView метода, прежде чем присвоить его this.htmlData.

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