是否可以将查询存储在变量中?
Is it possible to store a query in variable?
我实际上在使用 ember-简单分页。
它使用一个简单的逻辑:
-清空疮
-根据实际页面取数据
事实是过渡一点都不顺利,自己看:
https://streamable.com/sg6sg
有办法解决这个问题吗?我的想法告诉我,这将是一个解决方案,先获取数据,清空排序,然后将数据推回存储。
import Component from '@ember/component';
import { computed } from '@ember/object';
import { sort } from '@ember/object/computed';
import { inject as service } from '@ember/service';
export default Component.extend({
store: service(),
posts: computed(function() {
return this.get('store').peekAll('post');
}),
pageSize: 20,
pageNumber: null,
recordCount: null,
sortProps: ['createdAt:desc'],
sortedPosts: sort('posts', 'sortProps'),
loadPosts(getPageNumber) {
const pageSize = this.get('pageSize');
this.get('store').unloadAll('post');
this.get('store').
query('post', {page: {number: getPageNumber, size: pageSize}}).
then((result) => {
this.setProperties({
'recordCount': result.get('meta.record-count'),
'pageNumber': getPageNumber
});
};
},
init() {
this._super(...arguments);
this.loadPosts(1);
},
actions: {
getPage(getPageNumber) {
this.loadPosts(getPageNumber);
}
}
});
Ola @elo,感谢您的提问!
目前无法使用 out-of-the-box 解决方案立即执行此操作,但我建议您查看路线的加载状态,以便在加载数据时向用户显示微调器或其他内容。它会让它不那么刺耳。
如果您想了解如何设置简单的加载状态,可以按照此处的指南进行操作:https://guides.emberjs.com/release/routing/loading-and-error-substates/#toc_loading-substates
当然,会有一种方法可以实现您想要的,但是您首先会失去使用商店的一些功能,并且有人可能会争辩说用户体验可能同样令人不快(数据不'按下按钮后突然改变)。我认为在你的情况下使用加载状态是最好的中间立场
我实际上在使用 ember-简单分页。 它使用一个简单的逻辑: -清空疮 -根据实际页面取数据
事实是过渡一点都不顺利,自己看: https://streamable.com/sg6sg
有办法解决这个问题吗?我的想法告诉我,这将是一个解决方案,先获取数据,清空排序,然后将数据推回存储。
import Component from '@ember/component';
import { computed } from '@ember/object';
import { sort } from '@ember/object/computed';
import { inject as service } from '@ember/service';
export default Component.extend({
store: service(),
posts: computed(function() {
return this.get('store').peekAll('post');
}),
pageSize: 20,
pageNumber: null,
recordCount: null,
sortProps: ['createdAt:desc'],
sortedPosts: sort('posts', 'sortProps'),
loadPosts(getPageNumber) {
const pageSize = this.get('pageSize');
this.get('store').unloadAll('post');
this.get('store').
query('post', {page: {number: getPageNumber, size: pageSize}}).
then((result) => {
this.setProperties({
'recordCount': result.get('meta.record-count'),
'pageNumber': getPageNumber
});
};
},
init() {
this._super(...arguments);
this.loadPosts(1);
},
actions: {
getPage(getPageNumber) {
this.loadPosts(getPageNumber);
}
}
});
Ola @elo,感谢您的提问!
目前无法使用 out-of-the-box 解决方案立即执行此操作,但我建议您查看路线的加载状态,以便在加载数据时向用户显示微调器或其他内容。它会让它不那么刺耳。
如果您想了解如何设置简单的加载状态,可以按照此处的指南进行操作:https://guides.emberjs.com/release/routing/loading-and-error-substates/#toc_loading-substates
当然,会有一种方法可以实现您想要的,但是您首先会失去使用商店的一些功能,并且有人可能会争辩说用户体验可能同样令人不快(数据不'按下按钮后突然改变)。我认为在你的情况下使用加载状态是最好的中间立场