我接手了一个稍微有点破损的ember项目,但我甚至连最基本的模型都无法工作。我已经评论掉了以前项目的所有代码,基本上只有这个:
App = Ember.Application.create();
App.ApplicationAdapter = DS.FixtureAdapter.extend
App.Admin = DS.Model.extend(
userName: DS.attr("string")
roles: DS.attr("string")
)
App.Admin.FIXTURES = [
{
userName: 'Tester One'
roles: 'six-sided die'
}
{
userName: 'Tester Two'
roles: 'four-sided die'
}
]
App.Router.map ->
@route 'about', { path: '/about' }
@resource 'admins', { path: '/admins' }
App.AdminsRoute = Ember.Route.extend
model: ->
return @store.find('admin')
它构建在Rails 4.0.1应用程序内部(运行ember-rails
的0.14.1和ember-source
的1.3.2)。当我转到根页面时,我看到了正确的ember模板。当我点击about
的链接时,我会被路由到about
模板。但是,当我点击admins
或转到/admins
时,我没有让它呈现admins
模板(它只是一些静态文本),而是在我的js控制台中得到了这个错误:
Error while loading route: TypeError: Object function () {
var Class = makeCtor(), proto;
Class.ClassMixin = Mixin.create(this.ClassMixin);
Class.PrototypeMixin = Mixin.create(this.PrototypeMixin);
Class.ClassMixin.ownerConstructor = Class;
Class.PrototypeMixin.o...<omitted>... } has no method 'create'
后面是ember代码中的一堆回溯。我在任何地方都不调用create
,它为应用程序中的其他型号提供了类似的错误,我(此后)对此进行了评论。我试着按照余烬指南来构建这个,因为它肯定会起作用。
Ember检查器在/admins
处使用AdminsController
和admins
模板看到名为AdminsRoute
的admins
路由。
简单地说,我不知道如何进一步调试它。
我已经尝试过ember/-data的几个版本,但目前我使用的是1.4.0-beta和1.0.0-beta,但仍然会出现这个错误。
谢谢!
当将coffeescript与ember一起使用时,这是一个常见的错误,您必须更新
App.ApplicationAdapter = DS.FixtureAdapter.extend
至
App.ApplicationAdapter = DS.FixtureAdapter.extend()
可能是缺少逗号吗?
App.Admin.FIXTURES = [
{
userName: 'Tester One'
roles: 'six-sided die'
}
{
userName: 'Tester Two'
roles: 'four-sided die'
}
]
至
App.Admin.FIXTURES = [
{
userName: 'Tester One'
roles: 'six-sided die'
},
{
userName: 'Tester Two'
roles: 'four-sided die'
}
]
试着给固定装置中的模型一个唯一的id
我怀疑升级过程中可能出了什么问题,这是一个不完美的存储实现。
store.coffee
读起来很简单:
App.ApplicationAdapter = DS.FixtureAdapter.extend
我把它改成:
App.Store = DS.Store.extend
adapter:DS.FixtureAdapter
它运行得很好(尽管我确实需要添加id,正如@chopper所指出的)。鉴于我们将为商店使用api,我将坚持使用这个变体,尽管@marcio junior的建议也起到了作用!谢谢