7.4 Models -- Pushing Records into the Store

1670 ワード

一、概説
1.storeはすべてのrecordsのキャッシュとして、これらのrecordsはすでにあなたのアプリケーションにロードされています.あなたのappでは、ルーティングまたはcontrollerがrecordを要求した場合、このstoreをキャッシュしたらすぐに返すことができます.そうでなければ、このstoreはadapterにロードするように要求する必要があります.これは、通常、サーバからネットワークアクセスして取得することを意味します.アプリケーションがレコードを要求するのを待つのではなく、レコードをstoreのキャッシュにプッシュすることができます.
2.これは役に立ちます.ユーザーが次に何を必要としているかをよく意識できれば、recordsです.ネットワークリクエストの完了を待つのではなく、リンクをクリックします.jsはテンプレートをすぐにレンダリングできます.一瞬の感じです.
3.recordsにプッシュされる別の例は、アプリケーションがバックエンドにストリーム接続されている場合です.レコードが作成または変更された場合は、すぐにUIを更新します.
二、Pushing records
1.storeのpush()メソッドを呼び出してrecordをstoreにプッシュします.
2.たとえば、アプリケーションが最初に起動したときにstoreにデータを事前にロードしたいとします.route:アプリケーションを使用してこのようにすることができます.route:applicationはルーティング階層の中で最もトップクラスのルーティングであり、そのmodel hookはappが起動したときに呼び出されます.
app/models/album.js
export default DS.Model.extend({
  title: DS.attr(),
  artist: DS.attr(),
  songCount: DS.attr()
});

app/routes/application.js
 
export default Ember.Route.extend({
  model() {
    this.store.push('album', {
      id: 1,
      title: "Fewer Moving Parts",
      artist: "David Bazan",
      songCount: 10
    });

    this.store.push('album', {
      id: 2,
      title: "Calgary b/w I Can't Make You Love Me/Nick Of Time",
      artist: "Bon Iver",
      songCount: 2
    });
  }
});