如何让一个支持组件的服务提供承诺
问题描述:
如何呈现等待服务注入的UI的UI?如何让一个支持组件的服务提供承诺
我想获得一个组件来呈现一个返回承诺的注入服务的基本属性。尽管我在其上创建了一个CP,但在承诺解决后仍无法解析UI。
我使用这个作为服务,因为这个功能住在比任何路线都长的导航栏中,我试图拥抱ember2.0。
应用程序/服务/ contest.js
import Ember from 'ember';
export default Ember.Service.extend({
store: Ember.inject.service(),
contest: Ember.computed(function() {
return this.get('store').find('contest', {
current: true
});
})
});
应用程序/荚/组件/较量米/ component.js
import Ember from 'ember';
export default Ember.Component.extend({
classNames: 'contest-meter',
contest: Ember.inject.service('contest'),
});
应用程序/荚/组件/较量米/模板。 hbs
{{contest.startDate}}
答
只需使用服务中的加载属性来确定数据是否已加载。
应用程序/服务/ contest.js
import Ember from 'ember';
const { inject, on } = Ember;
export default Ember.Service.extend({
store: inject.service(),
findCurrentContest: on('init', function() {
this.get('store').find('contest', {
current: true
}).then((response) => {
this.set('contest', response);
this.set('loaded', true);
});
})
});
应用程序/荚/组件/较量米/ component.js
import Ember from 'ember';
const { computed, inject } = Ember;
export default Ember.Component.extend({
classNames: 'contest-meter',
contest: inject.service(),
currentContest: computed.readOnly('contest.contest')
});
应用程序/荚/组件/较量米/模板。 hbs
{{#if contest.loaded}}
{{currentContest.startDate}}
{{else}}
Loading...
{{/if}}
+0
出于某种原因,我不得不这样做:this.get('response'.get('contesnt.firstObject')实际看到响应对象 –
令人不安的是所提出的解决方案是否定承诺。你不应该有另一个参考contest.contest()?顶级服务上没有startDate属性。 – user2105103