elo*_*elo 2 ember.js ember-data
目前,当一篇文章添加到商店时,当我在路由中使用 store.query() 过滤服务器端时,我的视图不会更新,但当我使用 store.findAll() 过滤客户端时,它会更新。
使用findAll,过滤客户端
//route.js
model() {
return this.get('store').findAll('article');
}
//controller.js
articleSorted: computed.filterBy('model', 'isPublished', true),
Run Code Online (Sandbox Code Playgroud)
并带有查询过滤服务器端
//route.js
model() {
return this.get('store').query('article', { q: 'isPublished' }),
}
Run Code Online (Sandbox Code Playgroud)
事实是 findAll 正在重新加载,而 query 则没有。
谢谢你的提问。我会尽力回答这个问题,但似乎应该在 Ember 指南中添加更多文档来解释这种情况
本质上this.store.findAll()是this.store.query()做两件截然不同的事情。被设计为所有实体(在您的情况下为文章)的findAll()表示,因此当商店找到更多它应该关心的文章时,结果将自动更新是有意义的。它这样做是因为它不返回文章数组,而是返回一个会自动更新的数组。DS.RecordArray
query()另一方面,旨在每次询问后端期望的结果是什么,并且您通常将许多参数传递给query()后端用于查找或过滤结果的调用。前端不可能确切地知道后端如何解释这些查询参数,因此当添加满足相同查询的新文章时,前端不可能“自动更新”。
那有意义吗?您想让我说得更详细吗?
| 归档时间: |
|
| 查看次数: |
1575 次 |
| 最近记录: |