探索 Vuejs/Laravel 视图中 async/await 函数的使用
P粉561438407
P粉561438407 2024-03-19 17:08:48
0
1
440

您好,我正在尝试使用异步函数从控制器获取信息,我在组件中执行此操作:

我需要发送参数,因为我已经看到了与 Mounted() 类似的答案,但它们不会向函数发送参数,因此如果我不添加参数,它将无法工作。

查看部分:

<tbody>
  <tr v-for="(post, index) in last_month_day" v-bind:index="index">
    <td>{{ index+1 }}</td>
    <td v-for="(post2, index2) in branch_office_posts" v-bind:index="index2">
      $ {{ getTotalIncomes(index+1, post2.branch_office_id) }}
    </td>
  </tr>
</tbody>

我需要将这两个参数传递给函数:index+1 和 post2.branch_office_id

然后我在方法部分执行此操作:

methods: {
  async TotalIncomeData(day, branch_office_id) {
    const response = await fetch('/api/collection/total/'+day+'/'+branch_office_id+'?api_token='+App.apiToken)
    return response;
  },
  getTotalIncomes(day, branch_office_id) {
    return this.TotalIncomeData(day, branch_office_id);
},

它有效,我的意思是如果使用 console.log() 检查响应它会得到一个值。 我知道我不能在视图中使用异步等待函数,这就是为什么我使用另一个函数在你可以看到的内部调用这个函数,但我不知道为什么我不直接在视图中使用它,它说:

$ [object Promise]

所以它没有显示值,所以我想知道为什么?代码有什么问题?我真的需要帮助,谢谢!

P粉561438407
P粉561438407

全部回复(1)
P粉883973481

您可以使用 data 属性来存储响应。然后调用该函数发出请求,UI 中绑定到数据的任何内容都将相应更新。

您缺少的部分是 .then(...),它在 fetch 文档。

例如:

data: () => ({
  response: null,
}),
methods: {
  fetchData() {
    fetch(`/api/collection/total/${day}/${branch_office_id}?api_token=${App.apiToken}`)
    .then(
      (response) => { this.response = response; }
    );
  },
},

现在,在您的 UI 中,检查响应是否已完成返回,v-if="response",然后根据需要显示它。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板