php 获取错误Alpine表达式错误:e未定义

wb1gzix0  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(96)

我在livewire 2中集成了tiptap编辑器,它一直工作得很好,直到我将我的项目升级到livewire 3。
下面是Livewire Article组件的代码

public function insertMedia(Media $media): void
    {
        $this->dispatch('tiptap-insert-media', [
            'type' => $media->mime_type,
            'url' => '/storage/' . $media->getPathRelativeToRoot(),
            'alt' => $media->name,
        ]);

        $this->showMediaModal = false;
    }

在tiptap.js中

insertMedia(type, url, alt) {
                if (type.startsWith('image')) {
                    editor.chain().focus().setImage({src: url, alt: alt}).run();
                }
                if (type.startsWith('video')) {
                    editor.chain().focus().insertContent(`<video src="${url}"></video>`).run();
                }
            },

在tiptap.blade.php

<div
    wire:ignore
    x-data="setupEditor(@entangle($attributes->wire('model')){{ $attributes->wire('model')->hasModifier('defer') ? '': '.defer' }})"
    x-init="() => init($refs.element)"
    x-on:tiptap-insert-media.window="insertMedia($event.detail.type, $event.detail.url, $event.detail.alt)"
    {{ $attributes->whereDoesntStartWith('wire:model') }}
>

我在这行出错了-

x-on:tiptap-insert-media.window="insertMedia($event.detail.type, $event.detail.url, $event.detail.alt)"

误差
Alpine表达式错误:e未定义
表达式:“insertMedia($event.detail.type,$event.detail.url,$event.detail.alt)”
它被渲染成这样

<div wire:ignore="" x-data="setupEditor(window.Livewire.find('8lIbGsfwbm2bmzfgHfIq').entangle('article.content').defer)" x-init="() => init($refs.element)" x-on:tiptap-insert-media.window="insertMedia($event.detail.type, $event.detail.url, $event.detail.alt)" wire:target="save" wire:loading.delay.class="opacity-50" style="height: 500px;overflow: auto;">

它在livewire v2中工作得很好,但在v3中不工作。我已经尝试了所有的选项,甚至测试了函数是否传递类型,URL和ALT。

moiiocjp

moiiocjp1#

问题是这样的。在v2的前面,我们使用type => 'test'来传递

$this->dispatch('tiptap-insert-media', [
            'type' => $media->mime_type,
            'url' => '/storage/' . $media->getPathRelativeToRoot(),
            'alt' => $media->name,
]);

正确的方式。在v3中,我们可以传递类型:$media->mime_type,

$this->dispatch('tiptap-insert-media',
        type: $media->mime_type,
        url: '/storage/' . $media->getPathRelativeToRoot(),
        alt: $media->name
    );

相关问题