AlpineJS异步数据加载

问题描述 投票:0回答:1

我是第一次研究 AlpineJS,我正在尝试将一些数据加载到

x-data
属性中。

我有类似的东西

<body x-data="data">
...

在我的 HTML 中。里面

data
我存储了我以后使用的所有数据和功能(这是一个非常简单的SPA)

document.addEventListener('alpine:init', () => {
  Alpine.data('data', () => ({
    foo: 1,
    bar: 2,
    ...
  }));
}

一切工作正常,直到所有变量同步,但现在我需要将从数据库异步获取的一些数据分配给一个变量。

我尝试过一些简单的事情,比如

document.addEventListener('alpine:init', () => {
  Alpine.data('data', async () => ({
    foo: 1,
    bar: await getData(),
    ...
  }));
}
不幸的是,这不起作用。对于

Uncaught ReferenceError: VARIABLE_NAME is not defined

 内的每个变量,我都会得到一个 
data

如何解决这个问题?有处理这种情况的标准方法吗?

asynchronous async-await alpine.js
1个回答
0
投票
您可以在 init() 方法中分配异步数据,并从主

data() 函数中删除 async

document.addEventListener('alpine:init', () => { Alpine.data("data", () => ({ foo: 1, bar: null, init: async function () { this.bar = await this.getData(); }, getData: async function () { return Promise.resolve("abc"); } })); });
    
© www.soinside.com 2019 - 2024. All rights reserved.