加载异步路由时出现Ember错误

时间:2014-02-12 21:31:29

标签: javascript ember.js

我正在从JSON API加载数据。我的路线几乎总是需要从服务器获取新数据。我无法控制API格式。

我正在尝试使用Ember Asynchronous Routing guide中描述的功能。具体来说,我在路由的model挂钩中返回一个promise,这样我就可以延迟转换到路由,直到数据加载为止(并在此期间显示一个加载指示符)。

所有内容(actions.loadingafterModel等)似乎都按照指南中的说明进行操作。但是,每当我转换到之前去过的路线时,我都会收到一个showstopper错误。

这个JSBin是一个使用相同版本的Ember及其依赖项的最小示例:

http://jsbin.com/zorey/1/edit?html,js,output

单击第一个名称,返回,然后单击第二个名称。您将在控制台中看到此错误:

Error while loading route: TypeError: Object #<Object> has no method 'apply'

我做错了什么?

1 个答案:

答案 0 :(得分:2)

看看你的jsBin,问题就在这里:

afterModel: function(response, transition) {
    this.set('model', response);
    console.log('DONE LOADING');
}

您永远不应该在“afterModel”挂钩中设置模型。不仅没有必要(模型由“模型”钩子中的返回值设置),但它可能会导致钩子模式的一些混乱问题。

只需删除

即可
this.set('model', response);

行,你应该是金色的。