当我从商店加载一些数据时,我想在ember组件中显示加载微调器。如果商店出错,我想妥善处理。
以下是我当前代码的片段:
cachedCampaignDataIsPending: computed.readOnly('fetchCachedCampaignData.isPending'),
fetchCachedCampaignData: computed('campaign', function() {
return this.get('store').findRecord('cachedCampaignMetric').then( (cachedMetrics) => {
this.set('cachedCampaignData', cachedMetrics);
}, () => {
this.set('errors', true);
});
}),
如果服务器响应错误,这将正确地将错误设置为true,但cachedCampaignDataIsPending
无法正常运行。它没有设置为true。
但是,如果我重写我的代码以使计算属性不是 thenable ,那么它确实会触发。
fetchCachedCampaignData: computed('campaign', function() {
return this.get('store').findRecord('cachedCampaignMetric');
}),
使用then / catch逻辑,任何人都知道原因或如何使其正常启动?
感谢。
更新
我发现这对我有用,并且给了我需要的东西。
cachedCampaignDataIsPending: computed.readOnly('fetchCachedCampaignData.isPending'),
fetchCachedCampaignData: computed('campaign', function() {
let promise = this.get('store').findRecord('cachedCampaignMetric');
promise.then( (cachedMetrics) => {
this.set('cachedCampaignData', cachedMetrics);
}, () => {
this.set('errors', true);
});
return promise;
}),