Ember helper returns promise 的解析值
Ember helper that returns the resolved value of a promise
我怎样才能得到 this helper 到 return 承诺的结果?
// 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。
我会说,返回 Promise 而不是 helper 你可以尝试计算 属性。您可以创建依赖于 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}}
对于另一种方法,您可以
- 通常的最佳做法是避免 属性 的计算 returns Promise。
根据 embercommunity 的专家,答案是 helpers
不了解承诺,我们不应该使用它们来返回承诺的已解决值。
我使用一个组件得到了想要的结果,所以如果您发现自己处于这种情况,请考虑这一点。
我怎样才能得到 this helper 到 return 承诺的结果?
// 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。
我会说,返回 Promise 而不是 helper 你可以尝试计算 属性。您可以创建依赖于 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}}
对于另一种方法,您可以
- 通常的最佳做法是避免 属性 的计算 returns Promise。
根据 embercommunity 的专家,答案是 helpers
不了解承诺,我们不应该使用它们来返回承诺的已解决值。
我使用一个组件得到了想要的结果,所以如果您发现自己处于这种情况,请考虑这一点。