【问题标题】:Ember-data keeps saying "no mdel was found for"Ember-data 一直说“没有找到 mdel”
【发布时间】:2014-11-21 00:23:55
【问题描述】:

我正在尝试使用 Ember-Data 编写一个 EMberjs 应用程序。还有,require.js 和 coffeescript。尽管遵循了我能找到的每一个指南和讨论,我仍然收到“找不到模型”错误。

这是我的课程:

main.coffee(require.js 的入口点):

require.config
  paths:
    jQuery:     "../javascript/jquery-2.1.1.min"
    handlebars: "../javascript/handlebars-v1.3.0"
    ember:      "../javascript/ember.prod"
    ember_data: "../javascript/ember-data.prod",
  shim:
    ember:
         deps: ["jQuery", "handlebars"]
         exports: "Ember"
    'ember_data':
      deps:[ 'ember'],
      exports:'DS'

require ["app", "router"], (app, Router) ->
  app.deferReadiness()
  Router()
  app.advanceReadiness()
  return

app.coffee:

define "app", ["ember", "ember_data"], (Ember) ->
  window.app = Ember.Application.create()
  app.ApplicationAdapter = DS.FixtureAdapter.extend()
  app

router.coffee:

define "router", ["app", "ember-data", "ember", "models/person"], (app) ->
  ->         
    app.Router.map -> 
      @route 'home', path: "/"
      @resource('person', { path: 'person'},  ->
        @route('details', { path: ':slug' })
        return
      )
      return
    app.HomeRoute = Ember.Route.extend 
      model: ->

    app.PersonRoute = Ember.Route.extend 
      model: () ->
        return @store.find("Person")

models/person.coffee:

class app.Person extends DS.model
  first: DS.attr("string") 

app.Person.FIXTURES = { person: [
       {
        id: 1, 
        first: "first_1"
       },
       {
        id: 2, 
        first: "first_2"
       }
  ]}

但是当我转到http://localhost:9000/#/person, 时,我得到了这个:

Error while processing route: person.index" "No model was found for 'Person'" "EmberError@http://localhost:9000/assets/javascript/ember.prod.js:13949:17
Store<.modelFor@http://localhost:9000/assets/javascript/ember-data.prod.js:11264:1
Store<.findAll@http://localhost:9000/assets/javascript/ember-data.prod.js:10845:20
Store<.find@http://localhost:9000/assets/javascript/ember-data.prod.js:10476:1
app.PersonRoute<.model@http://localhost:9000/assets/javascript/router.js:24:16
apply@http://localhost:9000/assets/javascript/ember.prod.js:19296:1
superWrapper@http://localhost:9000/assets/javascript/ember.prod.js:18867:15
Route<.deserialize@http://localhost:9000/assets/javascript/ember.prod.js:24467:16
applyHook@http://localhost:9000/assets/javascript/ember.prod.js:45215:16
HandlerInfo.prototype.runSharedModelHook@http://localhost:9000/assets/javascript/ember.prod.js:43237:22
UnresolvedHandlerInfoByParam<.getModel@http://localhost:9000/assets/javascript/ember.prod.js:43463:16
bind/<@http://localhost:9000/assets/javascript/ember.prod.js:45089:16
tryCatch@http://localhost:9000/assets/javascript/ember.prod.js:45538:16
invokeCallback@http://localhost:9000/assets/javascript/ember.prod.js:45550:17
publish@http://localhost:9000/assets/javascript/ember.prod.js:45521:11
@http://localhost:9000/assets/javascript/ember.prod.js:28956:9
DeferredActionQueues.prototype.invoke@http://localhost:9000/assets/javascript/ember.prod.js:679:11
DeferredActionQueues.prototype.flush@http://localhost:9000/assets/javascript/ember.prod.js:749:15
Backburner.prototype.end@http://localhost:9000/assets/javascript/ember.prod.js:135:11
createAutorun/backburner._autorun<@http://localhost:9000/assets/javascript/ember.prod.js:521:9
" ember.prod.js:15069

有人知道吗?

编辑: 似乎如果我将 person.coffee 文件从 /models 移动到与 main 和 App 相同的级别,并相应地更改路由器中的“定义”行,它会按预期工作。对我来说仍然是个谜:(

【问题讨论】:

    标签: ember.js coffeescript requirejs ember-data


    【解决方案1】:

    我不能 100% 确定,但问题可能在于 App.Person 的格式错误。

    你能像这样重写固定装置吗?

    app.Person.FIXTURES = [
       {
        id: 1, 
        first: "first_1"
       },
       {
        id: 2, 
        first: "first_2"
       }
    ]
    

    【讨论】:

    • 是的,试过了。事实上,我是这样开始的,在我看到一些辩论说它需要它之后改变了。
    【解决方案2】:

    您应该使用reopenClass 来定义您的固定装置,因此请遵循以下原则:

    App.Documenter.reopenClass({
      FIXTURES: [
        { id: 1, firstName: 'Trek', lastName: 'Glowacki' },
        { id: 2, firstName: 'Tom' , lastName: 'Dale'     }
      ]
    });
    

    如示例中所示http://emberjs.com/guides/models/the-fixture-adapter/

    您使用的方法已过时。

    【讨论】:

    • 即使是这样(我从 Ember 主页上的“入门”演示中获取),进行此更改并没有解决它。还是一样的错误
    • 你能把产生错误的jsbin放在一起吗?
    • 不好意思承认,但我是 JSbin 的新手,我很难让我的多文件、require.js 咖啡脚本文件运行。我不断收到无法解释的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2016-12-21
    • 1970-01-01
    相关资源
    最近更新 更多