gpt4 book ai didi

alpine.js - 在 AlpineJS 中事后刷新数据

转载 作者:行者123 更新时间:2023-12-03 22:48:21 31 4
gpt4 key购买 nike

我正在使用 Alpine 显示将更改的项目列表。但是我不知道如何告诉 Alpine 在新的项目从服务器返回后刷新项目列表:

<div x-data=" items() ">
<template x-for=" item in items " :key=" item ">
<div x-text=" item.name "></div>
</template>
</div>
第一个“批次”的项目很好,因为它们被硬编码在 items() 中。功能:
    function items(){
return {
items: [
{ name: 'aaron' },
{ name: 'becky' },
{ name: 'claude' },
{ name: 'david' }
]
};
}
Alpine 之外的一些代码获取并接收一个全新的项目列表,我想显示它而不是原始集合。我无法弄清楚如何,或者目前是否可能。感谢您的任何指针。

最佳答案

有3种方法可以解决这个问题。

  • 将提取移动到 Alpine.js 上下文中,以便它可以更新 this.items

  •   function items(){
    return {
    items: [
    { name: 'aaron' },
    { name: 'becky' },
    { name: 'claude' },
    { name: 'david' }
    ],
    updateItems() {
    // something, likely using fetch('/your-data-url').then((res) => )
    this.items = newItems;
    }
    };
    }
  • (不推荐)从您的 JavaScript 代码中,访问 rootElement.__x.$data并设置 __x.$data.items = someValue

  • <script>
    // some other script on the page
    // using querySelector assumes there's only 1 Alpine component
    document.querySelector('[x-data]').__x.$data.items = [];
    </script>
  • 从您的 JavaScript 触发一个事件并从您的 Alpine.js 组件监听它。

  • 更新 Alpine.js 组件,注意 x-on:items-load.window="items = $event.detail.items" :
    <div x-data=" items() " x-on:items-load.window="items = $event.detail.items">
    <template x-for=" item in items " :key=" item ">
    <div x-text=" item.name "></div>
    </template>
    </div>
    触发自定义事件的代码,您需要填写有效负载。
    <script>
    let event = new CustomEvent("items-load", {
    detail: {
    items: []
    }
    });
    window.dispatchEvent(event);
    </script>

    关于alpine.js - 在 AlpineJS 中事后刷新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63233506/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com