2

我的 Ember 应用程序有一个简单的部分,它应该绘制一个书籍列表。问题是如果用户在从服务器加载书籍之前访问列表,则列表将为空。即使在数据加载完成后,列表仍然是空的。

加载数据后,Ember 必须通过哪些方法来刷新视图?放置此代码的合适位置在哪里?这是我的代码的样子:

路线:

App.MyRoute = Ember.Route.extend({
  model: function() {
    return App.store.find(App.Book); // get books from the server
  }
});

模板:

{{#each book in model}}
  <li {{ bindAttr data-book-id="book.id" }}>
    <span>{{ book.name }}</span>
  </li>
{{/each}}

为了记录,我想做这样的事情:

{{#if model.get('isLoaded')}}
  {{#each book in model}}
    <li {{ bindAttr data-book-id="book.id" }}>
      <span>{{ book.name }}</span>
    </li>
  {{/each}}
{{else}}
   <span>Loading books...</span>
{{/#if}}
4

1 回答 1

1

正如我在上面的评论中所说,{{each}}助手还有一个{{else}}你可以为你的列表添加一个微调器的地方,几乎就像你为单个项目做的那样。至于填充列表视图,您不必手动调用任何方法,因为框架负责填充ModelArray它给您的记录。如果即使它从您的后端 API 接收 JSON 也无法填充数据,那么问题一定出在您的存储/适配器/序列化器或 JSON 格式中。应该检查作为响应发送的服务器以及存储的设置方式(适配器/序列化器/等),以便正确地将 JSON 响应转换为 Ember-Data 期望的应用程序模型的有效数据。

于 2013-02-13T21:23:15.007 回答