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