【问题标题】:Laravel Livewire with AlpineJS: Entangle a Collection doesn't workLaravel Livewire 与 AlpineJS:纠缠一个集合不起作用
【发布时间】:2022-01-14 18:42:48
【问题描述】:

我有一个具有以下属性的 Livewire 组件...

class MyClass extends Livewire\Component {

    public $dataCollection;  // instance of Illuminate\Database\Eloquent\Collection
    public $dataArray;       // converted to an array of arrays

    /* ... blah ... */

    function getData() {
        /* ... */
        $this->dataCollection = $ordersModel->processMySearch($srch)->get(); // returns multiple lines of data, producing a Collection
        $this->dataArray = $this->dataCollection->toArray();
    }
}

现在,我的目标是将这些数据推送到 Livewire/Blade 模板并将其与 AlpineJS 变量纠缠在一起。

<div x-data="{
    myCollection: @entangle('dataCollection').defer,
    myArray:      @entangle('dataArray').defer
}">
<table>
<tbody>
    <template x-for="myRow in myCollection">
    <tr>
        <template x-for="(myData, colName) in myRow">
            <td :class="colName" x-text="myData"></td>
        </template>
    </tr>
    </template>
</tbody>
</table>
</div>

它不起作用,因为模型集合似乎没有正确地从 Livewire/PHP 转换(或映射)到 Alpine myCollection 变量。当我对变量运行console.log() 调试时,它告诉我它是一个空数组。

但是,如果我循环使用 myArray 变量(而不是 myCollection 变量):

<table>
<tbody>
    <template x-for="myRow in myArray">
    <tr>
    <!-- etc -->

然后HTML表格很好地在页面上生成。

我更喜欢使用 Collection 对象的原因是因为我可能想要更新表中的一些数据。如果我能够更新 (@entangleed) 模型对象中的数据并将模型同步回 Livewire/PHP 组件,那么我不需要在 PHP 中重新生成模型,可能会为我节省一些数据库调用。

是否可以通过这种方式将@entangleAlpine 变量添加到 PHP 集合中?如果是这样,我做错了什么,为什么在上面的示例中不起作用?

x


免责声明 上面的代码是我正在处理的一个更大项目的(非常)简化的摘录。它不是原始代码的直接复制/粘贴,因此可能包含轻微的语法错误。请将其视为伪代码。

【问题讨论】:

  • 组件中声明的属性与 Alpine @entangle('dataCollectionData').defer 中的 this 之间存在差异。打错字了?
  • 是的,这是一个错字。我会纠正它。感谢您指出。它不会改变整个问题的重点。

标签: javascript laravel-livewire alpine.js


【解决方案1】:

https://github.com/livewire/livewire/issues/2682 trata de revisar esta pagina me ayudo a resolver un error que yo tenia referente a eso también

【讨论】:

  • Stack Overflow 是一个纯英文网站,所有问题和答案必须为英文。请参阅Do posts have to be in English on Stack Exchange?How do I deal with non-English content?How to Ask
  • 基本上,@DiegoAlonson 是说他了解了一些关于如何启动 x-initx-data 的知识。他指向的帖子是说他们想在x-init 阶段执行@entangle 操作(在当时或撰写本文时,Alpine 不支持该操作)。但是,此讨论与我的问题无关。我很高兴在x-data 声明中执行@entangle。我的问题是可以@entangle-ed的数据质量
猜你喜欢
  • 1970-01-01
  • 2021-05-04
  • 2020-12-16
  • 1970-01-01
  • 2022-08-19
  • 1970-01-01
  • 2020-10-18
  • 2021-04-12
  • 2021-02-03
相关资源
最近更新 更多