У меня есть следующие компоненты:
//wrapper component
<template>
<div class="form-group form-group-text">
<label v-if="label" :for="fieldId()">{{ label }}</label>
<tiny-wrapper :key="pk"
class="form-control builderEditor"
:id="id"
:name="fieldName()"
v-model="form[field.key]"
:init="editorSettings"
:content="field.content"
></tiny-wrapper>
</div>
</template>
<script>
import Vue from 'vue'
import BuilderHelper from './builder-helper'
import TinyWrapper from '../tiny-wrapper'
export default Vue.extend({
props: [
'pk',
'title',
'fieldKey',
'field',
'databaseName',
'required',
'disabled',
'options',
'label',
'locale',
'hidden',
],
mixins: [BuilderHelper],
components: {
'tiny-wrapper': TinyWrapper,
},
computed: {
editorSettings() {
return {
// editor_selector: '.builderEditor',
selector: '#' + this.id,
menubar: '',
toolbar: 'bold italic | link',
height: 150,
contextmenu: 'bold italic | link',
forced_root_block: false,
invalid_elements: 'script',
statusbar: false,
resize: false,
browser_spellcheck: true,
}
}
},
})
</script>
и
// child component
<template>
<textarea :id="id" ref="editor" class="form-control" :class="classList" :value="content"></textarea>
</template>
<script>
import Vue from 'vue'
import 'tinymce/tinymce'
export default Vue.extend({
props: {
init: {
type: Object,
},
id: {
type: String,
required: true,
},
classList: {
type: String,
},
value: {
type: String,
}
},
data: function () {
return {
content: '',
tinyOptions: {},
}
},
mounted() {
// this.content = this.value
this.tinyOptions = Object.assign(window.tinyMCESettings, {
selector: '#' + this.id,
init_instance_callback: this.initInstanceCallback,
}, this.init)
tinymce.init(this.tinyOptions)
},
methods: {
initInstanceCallback(editor) {
editor.setContent(this.value)
editor.on('change', e => {
this.update(editor)
})
editor.on('keyup', e => {
this.update(editor)
})
this.$parent.$on('reset', () => editor.setContent(''))
},
update(editor) {
this.content = editor.getContent()
this.$emit('input', this.content)
},
}
})
</script>
Я использую компонент обертки, как 10 раз в моем документе.
Данные в дочернем компоненте одинаковы для каждого компонента-оболочки, состояние разделяется / перезаписывается данными в последнем созданном дочернем компоненте. Что я делаю не так?