Skip to content

Instantly share code, notes, and snippets.

@kticka
Last active August 7, 2020 14:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save kticka/b7555cadb39d15d10d26625c78edabe4 to your computer and use it in GitHub Desktop.
Save kticka/b7555cadb39d15d10d26625c78edabe4 to your computer and use it in GitHub Desktop.
Init script to mount multiple vue instances in non-spa projects
import Vue from "vue";
import Store from './some_vuex_store.js'
import Component1 from './some_comp.vue'
import Component2 from './some_comp2.vue'
window.addEventListener('load', () => {
const components = {Component1, Component2};
Object.keys(components).forEach((key) => {
components[key] = Vue.extend(Object.assign(components[key], {
store: Store
}));
});
const elements = document.querySelectorAll('[vue-component]');
elements.forEach(e => {
const component = e.getAttribute('vue-component');
new components[component]({
el: e,
propsData: e.dataset || {}
})
});
});
@kticka
Copy link
Author

kticka commented Oct 15, 2019

Html: <div vue-component="Component1" data-some_prop="some_prop_value"></div>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment