Kur*_*ucu 5 trix laravel-livewire alpine.js laravel-7
将 Trix 编辑器内容与 Livewire 连接在一起时,我遇到了问题。我认为问题在于当 Livewire 从 Trix 接收内容时,内容会被换出并且 Trix 被禁用。有没有更好的办法?
我所做的,有效的,如下。目前,页面被重定向到自身以重新启动 Trix(击败了 Livewire 的全部要点,但它也被用于其他事情)。
<div>
<input
id="newCommentTextTrixContent"
type="hidden"
wire:model="newCommentText"
>
<trix-editor
id="newCommentTextTrixEditor"
input="newCommentTextTrixContent"
></trix-editor>
<button wire:click="addComment(document.getElementById('newCommentTextTrixEditor').innerHTML)">Add Comment</button>
</div>Run Code Online (Sandbox Code Playgroud)
我试过了
我敢肯定像后者这样的东西更好,但是每次都以某种方式重新启动 Trix。这一切似乎有点混乱 - 所以问题是,这样做的正确方法是什么?
我让它工作了。您可能需要最新版本的 Livewire 才能使其工作,但代码大致如下。
<div wire:ignore>
<trix-editor
class="formatted-content"
x-ref="trix"
wire:model.debounce.999999ms="newCommentText"
wire:key="uniqueKey"
></trix-editor>
</div>
Run Code Online (Sandbox Code Playgroud)
为什么这样做?
wire:ignore在父节点上,因为 Trix 在文本区域上方插入工具栏。wire:ignore阻止 Livewire 担心它,因此不会在下一个周期中删除它或弄乱它。.lazy修饰符不适用于文本。此外,在每次按键时等待 Ajax 是痛苦的。就是这样。我使用上面的这个重复提交评论到评论流的末尾,一切似乎都很好。祝你好运!
请注意,我也有CKEditor的工作同样,描述在这里。
作为 @Kurucu 答案的扩展,以及 @Rehan 的评论;
\n\n\n这看起来效果很好。但是当我应用像 li 或粗体这样的样式时,它不会保留在电线中:模型中。例如:\n
\n<div>foo<br>bar<br>foobar</div>我在此处应用了项目符号,但缺少标签。您遇到过这个问题吗?\xe2\x80\x93 雷汉
要解决按下粗体、斜体或引号按钮时没有更新值的问题,请将以下部分添加到 trix 编辑器(请注意x-on:trix-change="$dispatch('input', event.target.value)"):
<div wire:ignore>\n <trix-editor\n class="formatted-content"\n x-data\n x-on:trix-change="$dispatch('input', event.target.value)"\n wire:model.debounce.1000ms="newCommentText"\n wire:key="uniqueKey"\n ></trix-editor>\n</div>\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3568 次 |
| 最近记录: |