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

时间:2015-01-30 06:36:12

标签: ember.js ember-data

我一直从单个对象(用户)的路由处理程序中获得以下错误。如果我单击链接以查看/显示单个对象(用户),它可以正常工作,但是当我在此路由刷新页面时,我不断收到此错误。

直接访问时导致错误的网址:

/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

应用程序/ router.js

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

应用程序/路由/用户/ 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。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:4)

您的服务器可能无法为/users/:id返回正确的JSON。

如果您使用的是RESTAdapter,则从服务器返回的JSON应该类似于

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

从用户列表输入ShowRoute时,所有用户都已使用store.find('user')方法加载(即通过/users服务器请求加载),因此return this.store.find('user', params.user_id);不提出请求到服务器,它只返回已经加载的用户。因此没有错误。