gpt4 book ai didi

javascript - 我如何在vue js中的内容可编辑的div中添加一个组件

转载 作者:行者123 更新时间:2023-12-04 17:25:53 27 4
gpt4 key购买 nike

我想通过单击 vue js 中的按钮在内容可编辑的 div 中添加一个 div。所以,我正在寻找正确的方法。

var ComponentClass = Vue.extend(AddTag)
var instance = new ComponentClass({
propsData: { type: 'primary' }
})
instance.$mount() // pass nothing
this.refs.message.appendChild(instance.$el)

这是我迄今为止尝试过的代码。谢谢

<div class="dropdown-buttons" :contenteditable="false" >
<el-popover
width="200px"
placement="bottom-start"
trigger="click"
@show="isDropdownActive = true"
@hide="isDropdownActive= false"
>
<div class="">
<el-popover
v-for="(filter, index) in list"
:key="filter"
placement="right-start"
width="200"
>
<div class="sub-filter-listing">
<div v-for="subFilter in subList[index]" :key="subFilter">
<span @click="selectSubFilter(subFilter)">{{subFilter}}</span>
</div>
</div>
<el-dropdown-item slot="reference" :command='filter'>
<div style="display: flex; flex-direction: row; justify-content: space-between;">
<span class="">{{(filter)}}</span>
<span style="margin-left: 5px;margin-right: 5px;float: right; font-size: 9px;"><i class="nova-carot-right"></i></span>
</div>
</el-dropdown-item>
</el-popover>
</div>
<el-button slot="reference" size="mini" class="sharing-dropdown-select-button">
<span class="">{{(selectedValue || selectedFilter || 'Select' )}}</span>
<span class="list-icon"><i class="icon carot-sign" :class="[isDropdownActive ? 'nova-carot-down':'nova-carot-right']"></i></span>
</el-button>
</el-popover>
</div>

最佳答案

我在这里回答过类似的问题:vue, how dynamically, programically, on click add component to the DOM specific place?但是要扩展关于如何将光标放在插入的子组件之后的答案,我们需要创建一个范围并使用 Range.setStartAfter() .然后我们简单地使用 focus() 将光标设置在我们定义的位置。代码示例:

  var ComponentClass = Vue.extend(Child);
var instance = new ComponentClass();
instance.$mount();

// we have marked ref="editor" on the contenteditable div
var editableDiv = this.$refs.editor;
var range = document.createRange();
var sel = window.getSelection();
range = sel.getRangeAt(0);
// check that we are in content editable div
if (sel.getRangeAt(0).endContainer.parentNode.id === "editor") {
range.insertNode(instance.$el);
range.setStartAfter(instance.$el);
sel.removeAllRanges();
sel.addRange(range);
editableDiv.focus();
}

SANDBOX 供您引用。

关于javascript - 我如何在vue js中的内容可编辑的div中添加一个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63370070/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com