如何在添加/删除数据时刷新Ember中的模板?

时间:2013-02-13 20:54:34

标签: ember.js ember-data

我的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}}

1 个答案:

答案 0 :(得分:1)

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