是否在路由的模型中异步调用findAll?

时间:2017-03-09 09:39:07

标签: ember.js ember-data

我的路线中有一个模型,如下所示:

 model: function () {
        return {
            "first-levels":this.get('store').findAll('student')
        };
    }

默认情况下,findAll是异步还是同步调用的?可以覆盖默认行为吗?

1 个答案:

答案 0 :(得分:4)

如果你返回普通对象,那么模型钩子不会等待Promises重新开始,所以它会立即返回。

model: function () {
        return {
            "first-levels":this.get('store').findAll('student')
        };
    }

但是如果你像下面那样返回它,那么模型钩子将等待Promise解决,

model: function () {
    return this.get('store').findAll('student');
}

注意:findAll将从商店获取结果并立即返回,并在后台,它将要求适配器再次获取并更新商店。可以使用this.get('store').findAll('student',{reload:true})来控制此行为。有关详细信息,请参阅findAll api guide