加载异步路由时出现余烬错误



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

我正在尝试使用 Ember 异步路由指南中描述的功能。具体来说,我在路由的 model 钩子中返回一个承诺,以便我延迟过渡到路由,直到数据加载(并同时显示加载指示器)。

一切(actions.loadingafterModel等)似乎都按照指南中的描述工作。但是,每当我过渡到以前去过的路线时,我都会收到一个显示障碍错误。

此 JSBin 是一个最小示例,它使用与初学者工具包中包含的相同版本的 Ember 及其依赖项:

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

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

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

我做错了什么?

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

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

你永远不应该在"afterModel"钩子中设置模型。 这不仅是不必要的(模型由"模型"钩子中的返回值设置),而且可能会导致钩子模式出现一些混乱的问题。

只需删除

this.set('model', response);

线,你应该是金色的。

最新更新