为什么 ckeditor 失去对 Laravel 8 / livewire 2 应用程序中输入的任何字符的关注?
Why ckeditor lose focus on any char entered in Laravel 8 / livewire 2 app?
在 Laravel 8 / livewire 2 应用程序中,我添加了 ckeditor 并且它可以工作,使用 jkavascript 更新 livewire 数据,
但问题是,当我在 ckeditor 区域输入 1 个字符时,它会失去焦点,接下来输入的符号会丢失。
我愿意 :
<div wire:ignore class="p-2 w-full">
<textarea
wire:model.lazy="form.content"
class="form-control"
id="content_textarea"></textarea>
<x-jet-input-error for="form.content" class="mt-2"/>
</div>
...
ClassicEditor
.create( document.querySelector( '#content_textarea' ), {
extraPlugins: [ SimpleUploadAdapterPlugin ],
// ...
} )
.then(editor => {
editor.model.document.on('change:data', () => {
console.log('change:data editor.getData()::')
console.log(editor.getData())
@this.set('form.content', editor.getData() )
})
})
.catch( error => {
console.error( error );
} );
我对这个表单上的所有输入都使用 lazy,它们工作正常 - 在浏览器控制台中,我看到仅当用户离开输入时才获取消息。
在上面的 change:data 事件中,我看到该事件被触发,我想这会打破惰性模式,但我不知道如何解决?
谢谢!
我找到了使用 change:isFocused 事件的决定:
CKEditorInit: function () {
ClassicEditor
.create( document.querySelector( '#content_textarea' ), {
extraPlugins: [ SimpleUploadAdapterPlugin ],
} )
.then(editor => {
editor.ui.focusTracker.on( 'change:isFocused', ( evt, name, isFocused ) => {
if ( !isFocused ) {
const doc = document.getElementById('news_admin_page_container');
var wireIds = window.livewire.find(doc.getAttribute("wire:id"))
wireIds.set('form.content', editor.getData())
}
} ); // 'change:isFocused'
在 Laravel 8 / livewire 2 应用程序中,我添加了 ckeditor 并且它可以工作,使用 jkavascript 更新 livewire 数据, 但问题是,当我在 ckeditor 区域输入 1 个字符时,它会失去焦点,接下来输入的符号会丢失。 我愿意 :
<div wire:ignore class="p-2 w-full">
<textarea
wire:model.lazy="form.content"
class="form-control"
id="content_textarea"></textarea>
<x-jet-input-error for="form.content" class="mt-2"/>
</div>
...
ClassicEditor
.create( document.querySelector( '#content_textarea' ), {
extraPlugins: [ SimpleUploadAdapterPlugin ],
// ...
} )
.then(editor => {
editor.model.document.on('change:data', () => {
console.log('change:data editor.getData()::')
console.log(editor.getData())
@this.set('form.content', editor.getData() )
})
})
.catch( error => {
console.error( error );
} );
我对这个表单上的所有输入都使用 lazy,它们工作正常 - 在浏览器控制台中,我看到仅当用户离开输入时才获取消息。 在上面的 change:data 事件中,我看到该事件被触发,我想这会打破惰性模式,但我不知道如何解决?
谢谢!
我找到了使用 change:isFocused 事件的决定:
CKEditorInit: function () {
ClassicEditor
.create( document.querySelector( '#content_textarea' ), {
extraPlugins: [ SimpleUploadAdapterPlugin ],
} )
.then(editor => {
editor.ui.focusTracker.on( 'change:isFocused', ( evt, name, isFocused ) => {
if ( !isFocused ) {
const doc = document.getElementById('news_admin_page_container');
var wireIds = window.livewire.find(doc.getAttribute("wire:id"))
wireIds.set('form.content', editor.getData())
}
} ); // 'change:isFocused'