如何让this helper返回承诺的结果?
// helpers/city-temperature.js
import Ember from 'ember';
export default Ember.Helper.extend({
weather: Ember.inject.service(),
compute(params) {
let location = params[0];
let temperaturePromise = this.get('weather').getTemperaturePromise(location);
return temperaturePromise.then((value)=>{
return value;
});
}
});
我在this discussion的代码之后对其进行了建模。它从远程API检索值,但我无法将其显示在组件中。我想在不传递DOM元素的情况下这样做。
完整的应用代码为here。
答案 0 :(得分:2)
根据来自embercommunity的专家,答案是helpers
并非承诺意识,我们不应该使用它们来返回承诺的已解决价值。
我使用组件获得了所需的结果,因此如果您发现自己处于这种情况,则需要考虑这一点。
答案 1 :(得分:0)
我会说,返回Promise而不是帮助你可以尝试计算属性。您可以创建依赖于location
的计算属性。请参阅此sample twiddle
import Ember from 'ember';
import DS from 'ember-data';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
result:Ember.computed(function(){
return DS.PromiseObject.create({
promise: Ember.RSVP.resolve({name:'Kumkanillam'}).then((result) => { return result;})
});
})
});
在hbs内部,
{{#if result.isPending}}
Loading...
{{else}}
value: {{result.name}}
{{/if}}
对于另一种方法,您可以refer this answer