【问题标题】:Ember.js render template before data loadsEmber.js 在数据加载之前渲染模板
【发布时间】:2013-03-15 08:34:38
【问题描述】:

目前我正在使用 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 中运行良好。有什么想法吗?

【问题讨论】:

    标签: ember.js ember-data


    【解决方案1】:

    默认情况下,如果您将查询传递给model.find,它将返回一个承诺。如果你的路由的模型钩子返回一个承诺,则 ember 路由器进入加载状态并等待承诺被解决。

    如果您改为使用 App.Object.find(),则 ember 会返回一个没有承诺的实时查询。如果这是第一次为模型调用 f​​ind,store 将启动一个没有参数的异步查询来加载初始数据集。

    有什么想法吗?

    如果您可以摆脱 {limit: 0} 参数,理想情况下会很棒。否则,请考虑从 setupController 挂钩设置模型:

    App.PostRoute = Ember.Route.extend({
      setupController: function(controller, model) {
        controller.set('content', App.Object.find({limit: 0}));
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 2019-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多