laravel - Trix editor 为什么工具栏在编辑器模糊时消失?
问题描述
我尝试在 Laravel8 livewire 中使用 trix 编辑器。我可以设法让它工作,但有一点很烦人。我使用插入到 Post 组件中的 trix livewire 组件。建议我使用 trix-blur 事件来保存编辑器的内容。这非常有效,我可以使用存储按钮将矩阵编辑器组件的值保存在数据库的帖子记录中。恼人的一点是,当trix-blur事件发生时,即使编辑器重新获得焦点,工具栏也会消失,再也不会出现。因此用户不能再使用它。我能做些什么来防止这种行为。
这是 trix 组件
<?php
namespace App\Http\Livewire;
use Livewire\Component;
class Trix extends Component
{
public $value;
public $trixId;
const EVENT_VALUE_UPDATED = 'trix_value_updated';
public function mount($value = ''){
$this->value = $value;
$this->trixId = 'trix-' . uniqid();
}
public function render()
{
return view('livewire.trix');
}
public function updatedValue($value){
$this->emit(self::EVENT_VALUE_UPDATED, $this->value);
}
}
及其观点
<div>
<input id="{{ $trixId }}" type="hidden" name="content" value="{{ $value }}">
<trix-editor wire:ignore class="text-white" input="{{ $trixId }}"></trix-editor>
</div>
<script>
var trixEditor = document.getElementById("{{ $trixId }}")
addEventListener("trix-blur", function(event) {
@this.set('value', trixEditor.getAttribute('value'))
})
</script>
这是帖子视图的相关部分
<div>
<div class="button-line flex flex-row">
<span class="flex w-full rounded-md shadow-sm sm:ml-3 sm:w-auto">
<button wire:click.prevent="store()" id="submit" type="button" class="button-register">
Enregistrer l'info-lettre
</button>
</span>
<span class="mt-3 flex w-full rounded-md shadow-sm sm:mt-0 sm:w-auto">
<button wire:click="closeModalPopover()" type="button" class="button-cancel">
Abandonner
</button>
</span>
</div>
@livewire('trix',['value'=>$body])
</div>
解决方案
我终于在这里找到了答案 https://devdojo.com/tnylea/laravel-livewire-trix-editor-component
答案在奖金部分的最后。请注意,只有 trix 编辑器输入必须有一个 wire:ignore 以及它周围的 div
<div wire:ignore>
<input id="{{ $trixId }}" type="hidden" name="content" value="{{ $value }}">
<trix-editor wire:ignore class="text-white" input="{{ $trixId }}"></trix-editor>
</div>
推荐阅读
- firebase - firebase 存储无法上传任何文件
- scala - Scala如何在某些覆盖条件下避免var
- java - 显示对话框时 JFileChooser 导致 UnsatisfiedLinkError
- amazon-web-services - AWS Batch 背后的调度策略
- python - 使用带有类方法的 theading.Thread 或 multiprocessing.Process 时是否需要将“self”传递给 args
- html - 如何在 Ionic 3 中从 HTML 调用函数?
- xsd - XSD 正则表达式匹配前 4 个字符
- javascript - 为什么使用 push 函数使数组变为数字?
- sass - scss bootstrap 4覆盖映射
- javascript - 如何替换数组中元素的实例?