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
}];

これは、フィクスチャ内のすべての Page オブジェクトを返すコードです

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

これは私の App.store です:

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のcreateの代わりにextendと大文字のSに注意してください。詳細については、 Ember ガイドを参照してください。

于 2013-02-15T21:48:33.860 に答える