Ember.js 如何使用fixture模拟慢速REST后端?
我正在尝试使用fixture在测试应用程序中模拟一个缓慢的后端。我正在做以下工作:Ember.js 如何使用fixture模拟慢速REST后端?,ember.js,ember-data,Ember.js,Ember Data,我正在尝试使用fixture在测试应用程序中模拟一个缓慢的后端。我正在做以下工作: App.SlowIndexRoute = Ember.Route.extend({ model: function() { return new Ember.RSVP.Promise(function(resolve) { Ember.run.later(function() { resolve(App.Node.find());
App.SlowIndexRoute = Ember.Route.extend({
model: function() {
return new Ember.RSVP.Promise(function(resolve) {
Ember.run.later(function() {
resolve(App.Node.find());
}, 2000);
});
}
});
我希望它的行为类似于慢速REST后端,即:
请求已发送
管线被激活,模板被渲染
来自后端的回复
现在,数据在模板中更新
相反,据我所知,这大概就是正在发生的事情:
请求已发送
未执行模板的渲染,路由尚未激活。
一旦回复到达resolveApp.Node.find;路线已激活
将呈现模板,并且由于数据已可用,因此也将显示该模板
如何更准确地模拟慢速REST后端?如何确保路由器在答复到达之前激活视图/模板?DS.FixtureAdapter的延迟属性默认为50毫秒。您可以通过在创建存储时手动实例化适配器来更改此设置
App.Store = DS.Store.extend({
adapter: DS.FixtureAdapter.create({ latency: 1000 });
});
从Ember 1.0.0-rc.6开始,路由的预期行为是等待模型的承诺在转换之前得到解决。如果不希望路由等待,请不要从模型挂钩返回带有then方法的承诺。返回常规对象、已加载的对象或代理。然后稍后在setupController挂钩中加载模型。DS.FixtureAdapter的延迟属性默认为50毫秒。您可以通过在创建存储时手动实例化适配器来更改此设置
App.Store = DS.Store.extend({
adapter: DS.FixtureAdapter.create({ latency: 1000 });
});
从Ember 1.0.0-rc.6开始,路由的预期行为是等待模型的承诺在转换之前得到解决。如果不希望路由等待,请不要从模型挂钩返回带有then方法的承诺。返回常规对象、已加载的对象或代理。然后稍后将模型加载到您的setupController挂钩中。谢谢!如果我理解正确,更改FixtureAdapter的延迟将影响所有路由。我有兴趣在一条路线一条路线的基础上对此进行调整,因此在我的情况下它将不起作用。您建议的第二种方法看起来更有希望。你能提供一些示例代码吗?谢谢!如果我理解正确,更改FixtureAdapter的延迟将影响所有路由。我有兴趣在一条路线一条路线的基础上对此进行调整,因此在我的情况下它将不起作用。您建议的第二种方法看起来更有希望。你能提供一些示例代码吗?