Ember.js - 如果 URL 直接命中,处理路线时出错

Ember.js - Error while processing route if URL hit directly

我不断从单个对象(用户)的路由处理程序中收到以下错误。如果我单击 link 到 view/show 单个对象(用户),它工作正常,但是当我在这条路线的 url 刷新页面时,我不断收到此错误。

URL直接访问时报错:

/users/:user_id

控制台中的错误消息:

Error while processing route: users.show Assertion Failed: Expected an
object as `data` in a call to `push`/`update` for ember-app@model:user:,
but was undefined Error: Assertion Failed: Expected an object as `data` 
in a call to `push`/`update` for ember-app@model:user: , but was undefined

app/router.js

Router.map(function() {
    this.resource('users', function() {
        this.route('show', { path: '/:user_id' });
    });
});

app/routes/users/show.js

export default Ember.Route.extend({
    model: function(params) {
        console.log('show route model hook'); //Hook firing on refresh
        return this.store.find('user', params.user_id);
    }
});

我正在使用 Ember 1.8.1 和 Ember-Data 1.0.0-beta.12。任何帮助将不胜感激!

您的服务器可能 return JSON 不适合 /users/:id

如果您使用的是 RESTAdapter,JSON return 来自服务器的内容应该类似于

user: {
  id: 1,
  other_attrs: '...'
}

当从用户列表中输入 ShowRoute 时,所有用户都已使用 store.find('user') 方法加载(即通过 /users 服务器请求加载),因此 return this.store.find('user', params.user_id); 不会向服务器发出请求,它只有 returns 已经加载用户。这样就没有错误了。