0

首先,我已经阅读了有关 SO 的相关问题,但似乎没有一个对我有帮助。

我有 2 个模型,FooBarFoo有一个属性bars,它有许多Bar

// FOO

export default DS.Model.extend({
  name: attr('string'),
  bars: hasMany('bar')
});

// 酒吧

export default DS.Model.extend({
  name: attr('string')
  foo: belongsTo('foo')
});

和 JSON 有效负载:

{
  "name": "Something",
  "bars": [
    {
       "name": "something else"
    },
    {
       "name": "another one"
    }
  ]
}

我一直试图找出这个错误一段时间,但我被卡住了。

这是jsbin。如果您查看浏览器控制台(不是 jsbin 控制台),您会看到错误。

4

1 回答 1

1

看起来您没有为“栏”对象指定 ID。每个模型都需要一个 ID 以使对象不具象并知道如何将其与资源相关联。将服务器输出更改为以下内容应该可以解决问题:

{
  "name": "Something",
  "bars": [
    {
       "id": 1,
       "name": "something else"
    },
    {
       "id": 2,   
       "name": "another one"
    }
  ]
}

另一种解决方案(无论如何,ID 都应该存在)是将“async”设置为 true,如下所示:

export default DS.Model.extend({
  name: attr('string'),
  bars: hasMany('bar', { async: true })
});

这将导致 EmberJS 在后台加载数据,并且不会阻塞/导致任何等待关系解析的错误。

于 2014-05-26T11:25:19.097 回答