我遇到了一个问题,如果promise上发生异常,我想返回默认值。我返回的数组似乎无法正常工作。
我的路线模型挂钩
model: function() {
return {
menuItems : this.store.find('menuItem').catch(function(error) {
Ember.Logger.error('Retrieving Menu Items', error);
return [];
}),
我的控制器模式
selectFirstMenuItem: function() {
var model = this.get('model');
//At this point model.menuItems is some weird object
//with an _id : 26, _label : undefined, _result: Array(0), _state : 1 etc.
//(maybe a Promise?), the .get method throws an undefined exception.
if(model.menuItems.get('length') > 0 ) {
...
}
}.observes('model.menuItems.@each'),
答案 0 :(得分:0)
您可以通过返回Ember.RSVP.hash
而不是包含承诺的常规对象来完成此工作,如下所示:
App.IndexRoute = Ember.Route.extend({
model: function() {
return Ember.RSVP.hash({
menuItems: this.store.find('menuItem').then(
function(menuItems){ return menuItems; },
function(error) {
Ember.Logger.error('Retrieving Menu Items', error);
return [];
})
});
}
});
然后按以下方式查看length
的{{1}}属性:
menuItems
工作示例here