У меня есть список Vue-компонентов, созданных с помощью v-for.
Каждый компонент содержит текстовую область для summernote, которая прекрасно работает.Каждый редактор загружает свой текст, и данные редактируются при редактировании.
Но когда изменяются свойства позиции компонентов, компоненты редактора ведут себя странно.
Иногда они изменяются, иногда они не изменяютсяпозиции и иногда они перезаписывают друг друга, оставляя одну и ту же строку в обоих редакторах.
Как правильно связать компонент, его элемент textarea и экземпляр редактора?
<div v-for="(item, i) in orderedItems" class="">
<component :is="item-text" :key="item.pos" :item="item" :key="item.id"></component>
</div>
<template id="item-text">
<div class="item-text">
<textarea class="text-editor" :id="'text-editor-'+item.id" :data-id="item.id" name=""></textarea>
</div>
</template>
<script>
Vue.component('item-text', {
props:['item'],
data: function () {
return {
}
},
mounted:function(){
$('.text-editor[data-id='+this.item.id+']').summernote({ });
$('.text-editor[data-id='+this.item.id+']').summernote('code', this.item.contents.html);
var parent = this;
$('.text-editor[data-id='+this.item.id+']').on('summernote.change', function(we, contents, $editable) {
var id = we.target.id;
parent.item.contents.html=contents;
});
},
template: '#item-text'
});
</script>