7.4 Models -- Pushing Records into the Store

1、概述後端

1. store是做爲一個全部records的緩存,這些records已經被你的應用程序加載。在你的app中若是你的路由或者一個controller請求一條record,若是它在緩存中這個store能夠當即返回它。不然,這個store必須請求adapter去加載它,這一般意味着從服務器上進行網絡訪問去檢索它。而不是等待應用程序去請求一條record,然而 ,你能夠提早把records推送到store的緩存中。緩存

2. 這是有用的,若是你能很好地意識到用戶接下來須要什麼records。當他們點擊一個連接,而不是等待一個網絡請求完成,Ember.js能夠馬上渲染模板。感受是一瞬間的。服務器

3. 推送到records的另外一個用例是若是你的應用程序有一個流鏈接到後端。若是一條record被建立或者修改,你想當即更新UI。網絡

2、Pushing recordsapp

1. 調用store的push()方法來推送一條record到store。this

2. 例如,假設當應用程序第一次啓動時,咱們想提早加載一些數據到store中。咱們可使用route:application來這樣作。route:application是在路由層次中最頂級的路由,而且當app啓動的時候它的model hook會被調用一次。spa

app/models/album.jscode

export default DS.Model.extend({
  title: DS.attr(),
  artist: DS.attr(),
  songCount: DS.attr()
});

app/routes/application.js blog

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
    });
  }
});
相關文章
相關標籤/搜索