在哪里放置固定装置?

时间:2014-03-31 22:58:29

标签: ember.js ember-data

我应该在哪里定义使用ember-cli生成的Ember JS应用中的灯具?我尝试了很多地方,例如app.js,并在名为“fixtures”的文件夹中。

4 个答案:

答案 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