2013-02-15 63 views
1

我使用FixtureAdapter在開發應用程序時在本地加載數據。使用findQuery和FixtureAdapter

這是我第模型夾具數據:

App.Page = DS.Model.extend({ 
    name : DS.attr('string'), 
    parent : DS.belongsTo('App.Page'), 
    subpages : DS.hasMany('App.Page') 
}); 

App.Page.FIXTURES = [{ 
    id: 1, 
    name: 'Home', 
    subpages: [ 2, 3, 4 ] 
},{ 
    id: 2, 
    name: 'About', 
    parent: 1 
},{ 
    id: 3, 
    name: 'Contact', 
    parent: 1 
},{ 
    id: 4, 
    name: 'Search', 
    parent: 1 
},{ 
    id: 5, 
    name: 'Blog', 
    parent: 2 
}]; 

這是返回我的燈具的所有頁面對象的代碼

App.PagesRoute = Ember.Route.extend({ 
    model: function() { 
     return App.Page.find(); 
    } 
}); 

這是我App.store:

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

這很好,但我該如何返回根頁面?

當我App.Page.findQuery(App.Page,{ id: 1 })我碰到下面的錯誤更改return App.Page.find()Uncaught Adapter is either null or does not implement 'findQuery' method

- 更新 -

當我App.Page.find({ name: 'Home' })我碰到下面的錯誤更改return App.Page.find()Uncaught TypeError: Cannot call method '_create' of undefined

我猜測這是因爲我的數據在那一刻沒有加載。但我認爲Ember會爲我處理這件事。

+0

['FixtureAdapter#findQuery'(https://github.com/emberjs /data/blob/master/packages/ember-data/lib/adapters/fixture_adapter.js#L108-L120)調用['FixtureAdapter#queryFixtures'](https://github.com/emberjs/data/blob/master/ packages/ember-data/lib/adapters/fixture_adapter.js#L42-L47),它具有註釋「*實現此方法以查詢燈具數據*」。因此,在調試中,在Store#findQuery處設置一個斷點,並檢查你從['this.adapterForType(type)'](https://github.com/emberjs/data/blob/master/packages/ember -data/lib/system/store.js#L745-L751) – MilkyWayJoe 2013-02-15 14:29:15

+0

另外,你如何定義你的應用程序'Store'? – MilkyWayJoe 2013-02-15 14:40:13

回答

2

本工程爲灰燼數據0.13:

App.fixtureStore = DS.Store.create({ 
    adapter: DS.FixtureAdapter.extend({ 
    queryFixtures: function(fixtures, query, type) { 
     return fixtures; 
    } 
    }) 
}); 

和測試時,一定要做到這一點:

App.store = App.fixtureStore; 
DS.set('defaultStore', App.fixtureStore); 
0

這是正確的方式來定義店:

App.Store = DS.Store.extend({ 
    revision : 11, 
    adapter: DS.FixtureAdapter 
}); 

注意延長代替商店創建和大寫字母小號。 有關更多信息,請參閱Ember Guide