2014-03-31 170 views
8

我应该在用ember-cli生成的Ember JS应用程序中定义灯具吗?我已经尝试了很多地方,如app.js,并在一个名为“灯具”的文件夹中。在哪里放置夹具?

+0

你有没有想过这个?我使用ember-cli生成了一个应用程序,并一遍又一遍地阅读指南,但仍然无法让它们工作。 – Stoutie

+1

@stoutie我想通了,写了一个答案。我希望它能帮助你! – stravid

回答

13

定义它周围挖后,我发现文件app.js改变Ember.MODEL_FACTORY_INJECTIONS = true;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 :-)

+0

警告,但值得,几周之后,我曾与这是由灰烬应用套件默认出厂打针设置为false造成localStorage的适配器正问题。这导致他们将它设置为true在HEAD看到(#565)[https://github.com/stefanpenner/ember-app-kit/issues/565] –

-2

我在模型文件夹

//models/item.js 
var Item = DS.Model.extend({...}) 

Item.FIXTURES = [ 
     { 
      id:1, 
      ... 
     } 
]; 

export default Item 
+1

我还没有在ember-cli中看到过像这样定义过的模型或夹具。看起来好像'出口默认DS.Model.extends({})'是建议的路线。任何方式来定义这个结构下的灯具? –

+0

我修改了我的代码,以澄清我在......最后的意思。 我保留它的原因......是因为如果你使用的是节点服务器,它会是'module.exports = Item' –

+0

@AmrDraz你真的在使用ember-cli生成的应用程序中尝试过吗?有些东西因为它仍然不适合我而缺失。 – Stoutie

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

而不是使用灯具,我在Ember CLI 0.0.40中做的方式是生成api存根。

ember generate api-stub tasks 

我是一个初学者的Node.js,但是从外观上来看,它设置了一个Express服务器脚本到/tasks端点响应,与您传递给该命令的名称,格式Ember REST适配器正在期待。然后,您只需使用您的夹具数据填写空白阵列。容易亵渎!

我看到的好处是,我不需要稍后重做任何事情,以便与安静的api集成,让我更近一步地推出真正的应用程序。

该生成器尚未完整记录。它只在ember help generate命令中显示为一个项目,我很勇敢/绝望/好奇/足以尝试。

+1

的命令是现今'余烬克HTTP的模拟<端点-path>'(运行ember-cli 0.1.2-master-f353e3e216) – Timo