2012-07-03 85 views
1

期間我得到這個試圖使用灰燼路由JS錯誤:灰燼數據類型錯誤路由

Uncaught TypeError: Object <DS.Store:ember215> has no method 'create' ember-data-latest.js:3677 
    Ember.onLoad.app.registerInjection.injection ember-data-latest.js:3677 
    Ember.Application.Ember.Namespace.extend.initialize ember-latest.js:10381 
    Ember.Application.Ember.Namespace.extend.initialize ember-latest.js:10380 
    Ember.Application.Ember.Namespace.extend.initialize ember-latest.js:10379 
    (anonymous function) app.js:6 

這是從GitHub最新Ember.js和灰燼數據今日(主版本,而不是發佈版本)。我知道使用當前的發行版本可能會導致類似的問題,但到目前爲止,這似乎很不尋常。

回頭看看這些行,看起來Ember路由代碼調用Ember數據函數,並導致錯誤(並阻止路由工作正常)。

有沒有解決方案呢?

的jsfiddle:http://jsfiddle.net/bkjT4/2/

App = Ember.Application.create({}); 

App.Store = DS.Store.create({ 
    revision: 4, 
    adapter: DS.RESTAdapter.create() 
}); 

App.Router = Ember.Router.extend({ 
    root: Ember.State.extend({ 
    index: Ember.State.extend({ 
     route: '/' 
    }) 
    }) 
}); 

App.router = App.Router.create({ 
    location: 'history' // does the same with hash 
}); 

App.initialize(App.router); 

+0

能爲您提供的jsfiddle有更多的代碼?你可以用這個作爲出發點:http://jsfiddle.net/pangratz666/PjbpL/ – pangratz

+0

完成 - http://jsfiddle.net/bkjT4/2/。謝謝! – user1499207

回答

4

好吧,關於has no method create()問題是因爲你命名你的店App.Store(大寫的字符串 「存儲」),它是一個實例。 Ember.js中的約定是您命名類UpperCase和實例lowerCase(請參閱the emberist的好博客文章)。這是一個問題,因爲在ember-data中有一個已註冊的注入,它會自動實例化一個Store類,如果已定義,請參閱here。長話短說:如果您將其更改爲App.store = Ember.Store.create({...})App.Store = Ember.Store.extend({...})此問題已解決。

解決此問題後,會出現另一個問題:您在Ember.Router中使用Ember.State,您應該使用Ember.Route代替。所以,最終的代碼看起來是這樣,看到http://jsfiddle.net/pangratz666/5Y2PX/

App = Ember.Application.create({}); 

App.store = DS.Store.create({ 
    revision: 4, 
    adapter: DS.RESTAdapter.create() 
}); 

App.Router = Ember.Router.extend({ 
    root: Ember.Route.extend({ 
    index: Ember.Route.extend({ 
     route: '/' 
    }) 
    }) 
}); 

App.router = App.Router.create({ 
    location: 'history' 
}); 

App.initialize(App.router); 

+0

謝謝!那破碎的代碼實際上來自Rails生成器,我猜想它還沒有更新。 – user1499207

+0

嗯,奇怪。但據我所知,這些東西很快就會被修復。 – pangratz