灯具中的嵌入式对象会引发“无法找到灯具”。错误 [英] Embedded objects in fixtures raise "unable to find fixtures" errors

查看:61
本文介绍了灯具中的嵌入式对象会引发“无法找到灯具”。错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在广泛使用ember-data的装置适配器,以在我的应用程序中提供很多设置数据。对于一个模型(结构),有一系列嵌入式相关对象(叠加层)。当我从商店加载一个Structure实例,然后查询其 overlays 属性时,出现此错误:

I'm using ember-data's fixtures adapter extensively to provide a lot of set-up data in my app. For one model ("Structure"), there is an array of embedded related objects ("Overlays"). When I load a Structure instance from the store, then query its overlays property, I get this error:

Uncaught Error: assertion failed: Unable to find fixtures for model type App.Overlay

两个模型的定义如下(为清楚起见,删除了一些其他字段/关系):

Both models are defined as follows (with a few other fields/relationships removed for clarity):

App.Structure = DS.Model.extend({
  // How this appears in lists
  name: DS.attr('string'),
  // Color to show this overlay with
  color: DS.attr('string'),
  // hash of overlay paths
  overlays: DS.hasMany('App.Overlay', { embedded: true })
});

App.Overlay = DS.Model.extend({
  view: DS.attr('string'),
  path: DS.attr('string')
});

我只需要一个夹具来演示:

I only need one fixture to demonstrate:

App.Structure.FIXTURES = [{
    "id": 0,
    "name": "Test Structure",
    "color": "#cc0033",
    "overlays": [{
        'view': 'Isometric',
        'path': "M17.5,19.508V8.626h-3.999v10.881c-1.404,0.727-2.375,2.178-2.375,3.869c0,2.416,1.959,4.375,4.375,4.375s4.375-1.959,4.375-4.375C19.876,21.686,18.905,20.234,17.5,19.508zM20.5,5.249c0-2.757-2.244-5-5.001-5s-4.998,2.244-4.998,5v12.726c-1.497,1.373-2.376,3.314-2.376,5.4c0,4.066,3.31,7.377,7.376,7.377s7.374-3.311,7.374-7.377c0-2.086-0.878-4.029-2.375-5.402V5.249zM20.875,23.377c0,2.963-2.41,5.373-5.375,5.373c-2.962,0-5.373-2.41-5.373-5.373c0-1.795,0.896-3.443,2.376-4.438V5.251c0-1.654,1.343-3,2.997-3s3,1.345,3,3v13.688C19.979,19.934,20.875,21.582,20.875,23.377zM22.084,8.626l4.5,2.598V6.029L22.084,8.626z"
    }]
}];

有了这些,我可以加载结构:

With those, I can load a Structure:

> var structure = App.fixtureStore.find(App.Structure, 0);
> structure.get('name');
"Test Structure"

但是,如果我查询其覆盖图,事情会变得很奇怪:

But if I query its overlay, things go squirrely:

> structure.get('overlays');
Uncaught Error: assertion failed: Unable to find fixtures for model type App.Overlay

向上?即使它们为空,我也需要为该模型声明灯具吗?

What's up? Do I need to declare fixtures for this model, even if they're empty?

这是显示错误的jsfiddle

推荐答案

啊,对小提琴进行更多的调整表明我确实需要为模型声明空的灯具:

Ah, a little more tweaking to the fiddle shows that I do need to declare empty fixtures for the model:

App.Overlay.FIXTURES = [];

这篇关于灯具中的嵌入式对象会引发“无法找到灯具”。错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆