Reputation: 88
I want to wrap some plain text in a Vue component dynamically, using mouseUp after selecting the text.
For example: <div> Hello World! </div>
=> <div> <Greeting/> World! </div>
Right now, I'm wrapping it using document.createElement("span")
and surrounding the range of the selection with it.
I have found similar questions like the next one, but I'm trying to avoid render level:
How can I dynamically wrap a substring with a component in Vue.js?
Upvotes: 2
Views: 493
Reputation: 88
Well, I finally managed to solve it. (Before submitting, I spend a lot of time figuring out. I don't know how I solved it so fast)
var ComponentClass = Vue.extend(Annotation);
var instance = new ComponentClass();
instance.$mount();
this.range.deleteContents();
this.range.insertNode(instance.$el);
Where: Annotation is a Vue component and the Range is the selection range obtained previously.
I hope this help someone else!
Upvotes: 2