我想显示一个很长的用户列表(是的,我建议分页,但客户端不会接受它),我想一次获取一些记录。
这主要是因为在服务器端创建列表是资源密集型的(每个字段都在数据库中加密< - 再次我无法改变这一点)并且检索1000条记录会减慢应用程序的速度。所以我想显示30条记录并立即获得接下来的30条记录(无限滚动的工作方式相同,无需向下滚动以获取更多记录)。下面是我的路线处理程序:
import Ember from 'ember';
export default Ember.Route.extend({
model(){
return this.store.query('user', {
firstname:'doe' // this comes from a textbox when filtering the list of users
pageSize:30,
page:1,
orderBy:'id'
});
}
});
为了让ember和webapi一起玩得很好,我在这里实现了所有内容https://github.com/CrshOverride/ember-web-api
api不返回任何分页信息,但我想继续抓取下一页,直到返回的记录集小于pagesize。
背景:我从角度1迁移到余烬2(非常多的是一个余烬新手),我相信我正在使用余烬数据,我通过ember-cli生成大部分内容
答案 0 :(得分:1)
这是Ember-Data不提供开箱即用的东西,但很容易自己实现。
// route.js
export default Ember.Route.extend({
setupController(controller) {
controller.fetchUsers(someNameOrAnother);
}
});
// controller.js
export default Ember.Controller.extend({
fetchUsers(name) {
this.set('allUsers', []);
this.fetchUsersHelper(name);
},
fetchUsersHelper(name, page = 1) {
const queryParams = {
firstname: name,
pageSize: 30,
page,
orderBy: 'id'
};
this.store.query('user', queryParams).then((users) => {
this.set('allUsers', this.get('allUsers').concat(users.toArray()));
if (users.get('length')>= queryParams.pageSize) {
this.fetchUsersHelper(name, queryParams.page + 1);
}
});
}
});