Myślę, że nie jest to możliwe tak, jak tego chcesz. Vue.JS nie działa bezpośrednio w DOM. Czyta elementy DOM, konwertuje je do funkcji renderowania i zastępuje cały Element wynikiem działania funkcji renderowania.
Prawdopodobnie powinieneś użyć JQuery do przeskanowania DOM i wypełnienia swojego obiektu $ data (i ewentualnie łańcucha szablonów dla Vue), a następnie zainicjować instancję Vue tymi wygenerowanymi danymi.
Ale ogólnie - powinieneś przemyśleć swoją logikę aplikacji, ponieważ wydajesz się robić coś bardzo zawiłego, co może być łatwiejsze do rozwiązania. Niezależnie od tego, co wygeneruje Twój szablon DOM, prawdopodobnie możliwe będzie również bezpośrednie przekształcenie w zmienną JS, a nawet dostęp do niej za pomocą wywołania AJAX ...
Jeśli chcesz renderować podejście awaryjne, jeśli klient nie obsługuje JS lub CDN ponieważ Vue nie jest dostępny, możesz użyć podejścia skrypt-szablon. Zdefiniuj treść Vue.JS w tagu skryptu, który zastąpi oryginalny DOM, kiedy Vue będzie gotowy.
przykład:
function loadVue() {
new Vue({
data: { values: [ 'aaa','bbb','ccc' ] },
template: '#list-template',
el: '#list'
})
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.4.4/vue.js"></script>
<ul id="list">
<li>a</li>
<li>b</li>
<li>c</li>
<button onclick="loadVue()">Load Vue.JS</button>
</ul>
<script type="text/x-template" id="list-template">
<ul id="list">
<li v-for="v in values">{{v}}</li>
</ul>
</script>
Zastanawiałem się, czy rzeczywiście nie będę przeszkadzał. Powiedzmy, że js jest wyłączone, ale nadal mam wstępnie zainicjowaną listę. – Gherman
@Niemiecki Dodałem przykład, jak rozwiązać alternatywną treść bez JS/Vue Problem, który opisujesz. – Falco