1

我在开发应用程序时使用 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
}];

这是返回我的 Fixture 中所有 Page 对象的代码

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

这是我的应用商店:

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

这很好用,但是如何返回根页面?

当我更改return App.Page.find()时,App.Page.findQuery(App.Page,{ id: 1 })我收到以下错误: Uncaught Adapter is either null or does not implement 'findQuery' method

- 更新 -

当我更改return App.Page.find()时,App.Page.find({ name: 'Home' })我收到以下错误: Uncaught TypeError: Cannot call method '_create' of undefined

我想那是因为我的数据当时没有加载。但我认为 Ember 会为我处理这个问题。

4

2 回答 2

2

这适用于 Ember Data 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);
于 2013-06-03T13:05:41.100 回答
0

这是定义商店的正确方法:

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

请注意Store中的extend而不是create和大写字母S。有关详细信息,请参阅Ember 指南

于 2013-02-15T21:48:33.860 回答