Вы все еще можете использовать v-html, вам просто нужно изменить то, к чему вы обращаетесь.Поскольку то, что вы получите, в конечном итоге станет фактическим элементом DOM, вы можете сделать несколько вещей.
Первое - просто изменить v-html для доступа к свойству outerHTML
* 1005.* вашего элемента
v-html="dynamicHtmlContent.outerHTML"
Или сохраните outerHTML
непосредственно в dynamicHtmlContent
вместо элемента DOM
this.dynamicHtmlContent = auditService.getDiff().outerHTML
Другая вещь, которую вы можете сделать, это непосредственно добавить элемент DOM с помощью доступ к вашей ссылке auditContainer
через this.$refs
displayDiff: function (baseDoc, newDoc, baseVersion, newVersion) {
var table = auditService.getDiff(baseDoc, newDoc, baseVersion, newVersion);
this.$refs.auditContainer.appendChild( table );
}
Обратите внимание, что это необходимо сделать после того, как компонент был смонтирован, так как auditContainer
еще не будет создан,Значение:
created() {
// code logic here and there
this.processDataDiff(results, 0);
},
будет изменено на:
mounted() {
// code logic here and there
this.processDataDiff(results, 0);
},
v-html Demo
var table = document.createElement('table');
var body = table.createTBody();
var row = body.insertRow();
var cell = row.insertCell();
cell.innerHTML = "A test table";
var vm = new Vue({
el: '#app',
data() {
return {
dynamicHtmlContent: null
}
},
created() {
this.displayDiff();
},
methods: {
displayDiff: function() {
this.dynamicHtmlContent = table;
}
}
});
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<div id="app">
<div class="diff-container" v-html="dynamicHtmlContent.outerHTML" ref="auditContainer"></div>
</div>
DOM append Demo
var table = document.createElement('table');
var body = table.createTBody();
var row = body.insertRow();
var cell = row.insertCell();
cell.innerHTML = "A test table";
var vm = new Vue({
el: '#app',
data() {
return {
dynamicHtmlContent: null
}
},
mounted() {
this.displayDiff();
},
methods: {
displayDiff: function() {
this.$refs.auditContainer.appendChild(table);
}
}
});
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<div id="app">
<div class="diff-container" ref="auditContainer"></div>
</div>