我有一个非常简单的测试用例,我得到了一个很大的 Json 条目列表,比如 2000 个项目。我只想在一页上显示所有这些项目。
(忘记这是否是一个好的设计)。

我在 index.html 中指定了一个标准微调器,它在加载页面和更改页面时显示。但是,微调器会在 for.repeat 循环完成之前停止并显示页面。

处理这个问题的最佳方法是什么。我试图为 for.repeat 添加一个新的微调器,但似乎没有办法知道循环何时完成。我尝试使用 TaskQueue 没有成功。
我可以使用 setTimeout 作为一个肮脏的黑客,但我想知道处理这种事情的正确方法。

谢谢

最佳答案

我很确定这会起作用:

export class LongDataList {

  constructor() {
    // start the spinner
    this.bindingSpinner = 1;
  }

  attached() {
    // stop the spinner
    this.bindingSpinner = 0;
  }

}

在你的模板中,是这样的:
<template>

  <!-- spinner -->
  <span if.bind="bindingSpinner">
    <i class="fa fa-spinner fa-spin fa-lg"></i>
  </span>

  <!-- List of records -->
  <table>
    <thead>
      <tr>
        <th>Username</th>
        <th>Password</th>
        <th>First name</th>
        <th>Last name</th>
      </tr>
    </thead>
    <tbody>
      <tr repeat.for="record of records">
        <td>${record.user_username}</td>
        <td>${record.user_password}</td>
        <td>${record.p_fname}</td>
        <td>${record.p_lname}</td>
      </tr>
    </tbody>
  </table>

</template>

最后,如果您希望微调器出现在不同的模块中,您可以从父组件绑定(bind)属性:
<long-data-list binding-spinner.bind="parent-binding-spinner"></long-data-list>

或者您可以使用 Aurelia 的 eventAggregator 来传达事件以启动和停止微调器。然而,第一个更简单。

关于Aurelia for.repeat 等待微调器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41612093/

10-12 22:39