2012-05-09 7 views
1

ember-dataでfindQueryを使用すると、localyモデルもロードされますか?私は、次のコードが動作することはできません。Emberデータfindとloadの比較

App.MyModel = DS.Model.extend { 

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

今私はのような何かを行うとき:didLoadコールバックが発射されていない

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

を。このコールバックが起動されたら?

答えて

1

クエリ機能を実装するには、アダプタにfindQueryメソッドを実装する必要があります。このメソッドは4つの引数を取りますstore, type, query, modelArray。サーバーが照会のデータを戻すときは、modelArrayloadメソッドを呼び出して照会結果を入力する必要があります。このメソッドは、データをストアにロードします。ここにある例は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, {}); 

関連する問題