我应该在哪里定义使用ember-cli生成的Ember JS应用中的灯具?我尝试了很多地方,例如app.js
,并在名为“fixtures”的文件夹中。
答案 0 :(得分:13)
在挖掘之后,我发现将文件Ember.MODEL_FACTORY_INJECTIONS = true;
中的app.js
更改为Ember.MODEL_FACTORY_INJECTIONS = false;
正在解决问题。
通过this question我还找到了另一种解决方案,您无需更改配置:
不必按照描述定义灯具,而是必须使用reopenClass
:
//models/item.js
var Item = DS.Model.extend({...});
Item.reopenClass({
FIXTURES: [
{ id: 1, ... },
{ id: 2, ... }
]
});
export default Item
与Ember和ember-cli一起快乐发展: - )
答案 1 :(得分:3)
而不是使用灯具,我在Ember CLI 0.0.40中执行此操作的方式是生成api存根。
ember generate api-stub tasks
我是node.js的初学者,但从它的外观来看,它设置了一个快速服务器脚本来响应/tasks
端点,对应于传递给命令的名称,格式为Ember REST适配器是期待的。然后,您只需使用夹具数据填充空数组。容易撒尿!
我看到的好处是,我不需要再做任何工作,以便与一个宁静的api集成,让我在某一天推出一个真正的应用程序更近一步。
此生成器尚未完整记录。它只显示为ember help generate
命令中的一个项目,我很勇敢/绝望/好奇/愚蠢到可以尝试。
答案 2 :(得分:0)
如果使用findQuery获取数据,则在使用上述方法时会出现此错误:
Error while loading route: Error: Assertion Failed: Not implemented: You must override the DS.FixtureAdapter::queryFixtures method to support querying the fixture store.
为了解决这个问题,我为模型创建了一个适配器,并实现了queryFixtures
方法来返回灯具。
#/adapters/[model-name].js
queryFixtures: function() {
return [ {
"key" : "value",
},
{
"key" : "value",
},
etc...
]
};
如上所述,我在模型定义中除reopenClass
之外还必须执行此操作。实际上它是相同的数据,我剪切和粘贴。这闻起来有点不好,但它确实有效。我确信在没有复制灯具的情况下,有更好的方法可以做到这一点,我只是不知道它是什么。
答案 3 :(得分:-2)
我在模型文件夹
中定义它 //models/item.js
var Item = DS.Model.extend({...})
Item.FIXTURES = [
{
id:1,
...
}
];
export default Item