Ember:加载路由时出错:类型错误:对象函数...没有方法'create'



我接手了一个稍微有点破损的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处使用AdminsControlleradmins模板看到名为AdminsRouteadmins路由。

简单地说,我不知道如何进一步调试它。

我已经尝试过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的建议也起到了作用!谢谢

最新更新