2

我正在尝试使用FIXTURES. 我正在执行以下操作:

App.SlowIndexRoute = Ember.Route.extend({
    model: function() {
        return new Ember.RSVP.Promise(function(resolve) {
            Ember.run.later(function() {
                resolve(App.Node.find());
            }, 2000);
        });
    }
});

我期望这将类似于慢速 REST 后端,即:

  1. 请求已发送
  2. 激活路由,渲染模板
  3. 回复从后端到达
  4. 现在数据在模板中更新

相反,据我所知,这大致是正在发生的事情:

  1. 请求已发送
  2. 未执行模板渲染,路线尚未激活。
  3. 一旦回复“到达”(resolve(App.Node.find());),路由就会被激活
  4. 模板渲染好了,既然数据已经有了,也显示出来了

如何更准确地模拟慢速 REST 后端?如何确保路由器在回复到达之前激活视图/模板?

4

1 回答 1

4

DS.FixtureAdapter 有一个latency默认为 50 毫秒的属性。您可以通过在创建商店时手动实例化适配器来更改此设置。

App.Store = DS.Store.extend({
    adapter: DS.FixtureAdapter.create({ latency: 1000 });
});

从 Ember 1.0.0-rc.6 开始,路由在转换之前等待模型的承诺解决是预期的行为。如果您不希望路由等待,请不要then从您的model钩子中返回承诺(带有方法的东西)。返回一个常规对象,一个已经加载的对象,或者一个代理。然后稍后加载模型,setupController例如在你的钩子中。

于 2013-07-28T18:19:22.907 回答