目前我正在使用ember rc-1和ember-data rev-11。
我想知道在从子路由获取ajax成功之前是否可以呈现父路由模板。
我有一台路由器:
-index
-objects
索引模板:
<!-- some html that i would like to display on page load event -->
{{outlet}}
对象模板:
{{#each item in controller }}
<!-- data from item -->
{{/each}}
对象路由模型方法:
model: function(){
return App.Object.find({limit: 0}) //this request is really heavy for backend and takes a lot of time
}
所以当我导航到对象url时,我看到一个空白页面,直到我从服务器获得所有对象的响应。
也许我在前面,但它在ember pre2或pre-3中运行得非常好。有什么想法吗?
答案 0 :(得分:4)
默认情况下,如果您将查询传递给model.find
,它将返回一个承诺。如果路由的模型钩子返回一个promise,则ember路由器进入加载状态并等待promises得到解决。
如果您使用App.Object.find(),则ember会返回一个没有promise的实时查询。如果这是第一次为模型调用find,那么它将启动异步查询而没有参数来加载初始数据集。
有什么想法吗?
如果你能摆脱{limit:0} param,理想情况下会很棒。否则,请考虑从setupController hook设置模型:
App.PostRoute = Ember.Route.extend({
setupController: function(controller, model) {
controller.set('content', App.Object.find({limit: 0}));
}
});