Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
New Twiddle
import Ember from 'ember';
function vueComponentWrapper(
Component,
{ container, data = {}}
) {
const mountNode = document.createElement("div");
container.appendChild(mountNode);
var ComponentClass = Vue.extend(Component);
var instance = new ComponentClass({
data: data
});
instance.remove = function() {
instance.$destroy();
container.removeChild(instance._DOM);
};
instance.$mount(mountNode);
return instance;
}
const vueComponent = {
template: `<div>It's vue component!</div>`
}
export default Ember.Component.extend({
didInsertElement() {
this.vueComponent = vueComponentWrapper(vueComponent, { container: this.element, data: this.attrs });
},
willDestroyElement() {
this.vueComponent.remove();
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
{
"version": "0.15.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "3.4.3",
"ember-template-compiler": "3.4.3",
"ember-testing": "3.4.3",
"vue": "https://cdn.jsdelivr.net/npm/vue/dist/vue.js"
},
"addons": {
"ember-data": "3.4.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.