Ember夹具不工作 [英] Ember fixtures not working

查看:262
本文介绍了Ember夹具不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的代码(使用ember-cli):

This is my code (using ember-cli):

app.coffee

app.coffee

`import Ember from 'ember'`
`import Resolver from 'ember/resolver'`
`import loadInitializers from 'ember/load-initializers'`

Ember.MODEL_FACTORY_INJECTIONS = true

App = Ember.Application.extend
  modulePrefix: 'dashboard' # TODO: loaded via config
  Resolver: Resolver


loadInitializers App, 'dashboard'

`export default App`


$ b b

adapters / application.coffee

adapters/application.coffee

`import DS from 'ember-data'`

ApplicationAdapter = DS.FixtureAdapter.extend()

`export default ApplicationAdapter`

models / mod.coffee

models/mod.coffee

`import DS from 'ember-data'`

Mod = DS.Model.extend 
  name: DS.attr 'string'
  body: DS.attr 'string'
  summary: DS.attr 'string'
  category: DS.attr 'string'

Mod.reopenClass {
  FIXTURES: [
    {
      id: 1
      name: "First mod"
      body: "..."
      summary: "..."
      category: "api"
    },
    {
      id: 2
      name: "Second mod"
      body: "..."
      summary: "..."
      category: "api"
    }
  ]
}

`export default Mod`

但是在应用程序中,我运行 ember服务,也不在浏览器中输出(输出:

But in the app nothing is thrown when I run ember serve nor in the browser conole (output:

DEBUG: ------------------------------- vendor.js:27630
DEBUG: Ember      : 1.7.0 vendor.js:27630
DEBUG: Ember Data : 1.0.0-beta.8.2a68c63a vendor.js:27630
DEBUG: Handlebars : 1.3.0 vendor.js:27630
DEBUG: jQuery     : 1.11.1 vendor.js:27630
DEBUG: ------------------------------- vendor.js:27630
generated -> route:application Object {fullName: "route:application"} vendor.js:27630
generated -> route:index Object {fullName: "route:index"} vendor.js:27630
generated -> controller:application Object {fullName: "controller:application"} vendor.js:27630
Rendering application with default view <dashboard@view:toplevel::ember323> Object {fullName: "view:application"} vendor.js:27630
generated -> controller:index Object {fullName: "controller:index"} vendor.js:27630
Rendering index with <dashboard@view:index::ember339> Object {fullName: "view:index"} vendor.js:27630
Ember Debugger Active 

在ember检查器中它显示我的mod模型,但没有记录

In ember inspector it shows me my mod model but with no record

这是整个github库 https://github.com/OpenCubes/dashboard/ tree / temp

Here is the whole github repo https://github.com/OpenCubes/dashboard/tree/temp

推荐答案

确定2件事。

首先你必须生成一个路由,如果你正在获取整个集合。默认情况下,我们主动生成的路由不会这样做。我相信它只是与歧义,我们不想意外获取你的整个数据源,所以我们留给用户todo。

first you must generate a route if you are fetching the whole collection. Our actively generated routes don't do this by default. I believe it just has to do with ambiguity and that we don't want to fetch your entire datasource by accident, so we leave this up to the user todo.

// app/routes/mods.js
import Ember from 'ember';
export default Ember.Route.extend({
  model: function() { return this.store.find('mod'); }
});

秒你必须在提供fixture时使用reopenClass。这是因为IE6 +没有办法正确地将静态/类变量传播给后代。所以ember实现自己的机制。在某个未来的时间点 setPrototypeOf 将可用,我们可以推迟。

second you must use reopenClass when providing fixtures. This is because IE6 + there is not way to properly propagate static/class variables to descendants. So ember implements its own mechanism. At some future point in time setPrototypeOf will be usable and we can defer to that. Until then for ember-cli apps, please use embers sanctioned way.

import DS from 'ember-data';
var Mod = DS.Model.extend({...})
Mod.reopenClass({
  FIXTURES: [
  ...
  ]
});
export default Mod;

那么它工作

这篇关于Ember夹具不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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