Ember 設(shè)置記錄到Store

2018-01-06 18:00 更新

EmberStore就像一個(gè)緩存池,用戶提交的數(shù)據(jù)以及從服務(wù)器獲取的數(shù)據(jù)會(huì)首先保存到Store。如果用戶再次請(qǐng)求相同的數(shù)據(jù)會(huì)直接從Store中獲取,而不是發(fā)送HTTP請(qǐng)求去服務(wù)器獲取。

當(dāng)數(shù)據(jù)發(fā)生變化,數(shù)據(jù)首先更新到Store中,Store會(huì)理解更新到其他頁(yè)面。所以當(dāng)你改變Store中的數(shù)據(jù)時(shí),會(huì)立即反應(yīng)出來(lái),比如上一篇更新記錄小結(jié),當(dāng)你修改article的數(shù)據(jù)時(shí)會(huì)立即反應(yīng)到頁(yè)面上。

1,push()方法

你可以調(diào)用push()方法一次性把多條數(shù)據(jù)保存到Store中。比如下面的代碼:

//  app/routes/application.js


import Ember from 'ember';


export default Ember.Route.extend({
    model: function() {
        this.store.push({
            data: [
                {
                    id: 1,
                    type: 'album',
                    attributes: {   //  設(shè)置model屬性值
                        title: 'Fewer Moving Parts',
                        artist: 'David Bazan'
                        songCount: 10
                    },
                    relationships: {}  //  設(shè)置兩個(gè)model的關(guān)聯(lián)關(guān)系
                },
                {
                    id: 2,
                    type: 'album',
                    attributes: {   //  設(shè)置model屬性值
                        title: 'Calgary b/w I Can\'t Make You Love Me/Nick Of Time',
                        artist: 'Bon Iver',
                        songCount: 2
                    },  
                    relationships: {}  //  設(shè)置兩個(gè)model的關(guān)聯(lián)關(guān)系
                }
            ]
        });
    }
});

注意type屬性值必須是模型的屬性名字。attributes哈希里的屬性值與模型里的屬性對(duì)應(yīng)。

本篇不是很重要,就簡(jiǎn)單提一提,如有興趣請(qǐng)看Pushing Records Into The Store的詳細(xì)介紹。


博文完整代碼放在Github(博文經(jīng)過(guò)多次修改,博文上的代碼與github代碼可能有出入,不過(guò)影響不大?。?,如果你覺得博文對(duì)你有點(diǎn)用,請(qǐng)?jiān)趃ithub項(xiàng)目上給我點(diǎn)個(gè)star吧。您的肯定對(duì)我來(lái)說(shuō)是最大的動(dòng)力!!

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)