1

ember-data で findQuery を使用すると、モデル localy も読み込まれますか? 次のコードを機能させることができません:

App.MyModel = DS.Model.extend {

   name: DS.attr('string')
   didLoad: ->
    console.log('model loaded')
}

今、私が次のようなことをすると:

objects = App.store.find(App.MyModel, [{name: "john"},{name: "jack"}])

didLoad コールバックは起動されません。このコールバックが発生したとき?

4

1 に答える 1

1

クエリ機能を実装するfindQueryには、アダプターにメソッドを実装する必要があります。このメソッドは 4 つの引数を取りますstore, type, query, modelArrayloadサーバーがクエリのデータを返したら、 でメソッドを呼び出してmodelArrayクエリ結果を入力する必要があります。このメソッドは、データをストアにもロードします。例を参照してください: http://jsfiddle.net/pangratz666/5HMGd/

App.store = DS.Store.create({
    revision: 4,
    adapter: DS.Adapter.create({
        find: Ember.K,
        findQuery: function(store, type, query, modelArray) {
            // expect server to return this array
            modelArray.load([{ id: 1, name: 'John'}, { id: 2, name: 'Jack'}]);
        }
    })
});

App.MyModel = DS.Model.extend({
    name: DS.attr('string'),
    didLoad: function() {
        console.log('model loaded', this.toJSON());
    }
});

// invoke query which loads the 2 models, and didLoad is called
App.store.find(App.MyModel, {});

</p>

于 2012-05-31T11:43:01.010 に答える