EmberJS不能设置property 'store'未定义的(DS.hasMany)

EmberJS Cannot set property 'store' of undefined (DS.hasMany)

本文关键字:DS hasMany 未定义 设置 不能 EmberJS store property      更新时间:2023-09-26

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

2模型, Foo Foo 有一个属性,酒吧,这 hasMany

//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控制台),您可以看到错误。

看起来你没有为你的"bar"对象指定一个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在后台加载数据,而不是阻塞/导致任何等待关系解析的错误。