我正在从JSON API加载数据。我的路线几乎总是需要从服务器获取新数据。我无法控制API格式。
我正在尝试使用Ember Asynchronous Routing guide中描述的功能。具体来说,我在路由的model
挂钩中返回一个promise,这样我就可以延迟转换到路由,直到数据加载为止(并在此期间显示一个加载指示符)。
所有内容(actions.loading
,afterModel
等)似乎都按照指南中的说明进行操作。但是,每当我转换到之前去过的路线时,我都会收到一个showstopper错误。
这个JSBin是一个使用相同版本的Ember及其依赖项的最小示例:
http://jsbin.com/zorey/1/edit?html,js,output
单击第一个名称,返回,然后单击第二个名称。您将在控制台中看到此错误:
Error while loading route: TypeError: Object #<Object> has no method 'apply'
我做错了什么?
答案 0 :(得分:2)
看看你的jsBin,问题就在这里:
afterModel: function(response, transition) {
this.set('model', response);
console.log('DONE LOADING');
}
您永远不应该在“afterModel”挂钩中设置模型。不仅没有必要(模型由“模型”钩子中的返回值设置),但它可能会导致钩子模式的一些混乱问题。
只需删除
即可this.set('model', response);
行,你应该是金色的。