2012-08-10 102 views

回答

22

使用DS.FixtureAdapter(或DS.FixtureAdapter.create())如果您還沒有(但?)謹慎地與後端進行通信,但會將數據作爲「固件」存儲在客戶端中。一旦你已經聲明瞭一個模型:

App.Thing = DS.Model.extend({ 
    name: DS.attr('string'), 
    // ... 
}); 

您可以定義夾具:

App.Thing.FIXTURES = [ 
    { 
    id: 1, 
    name: '...', 
    // ... 
    }, 
    { 
    id: 2, 
    name: '...', 
    // ... 
    }, 
]; 

然後你就可以使用他們的餘燼數據的方法(例如App.Thing.findAll()等),並對其進行操作,但當然,它只會持續頁面(即javascript環境)。

DS.RestAdapter雖然顯然還在開發中,但它的設計非常適合Rails API,但可能會被修改/擴展以適用於您正在使用的任何RESTful API。它知道通過致電/things來處理App.Thing.findAll(),並且通過致電/things/12來處理App.Thing.find(12)。這是一個相對路徑,追加到命名空間參數,您在傳遞:

App.store = DS.Store.create({ 
    revision: 4, 
    adapter: DS.RestAdapter.create({ 
    namespace: 'http://what.ever/api/v1' 
    }) 
}); 

DS.Adapter是相當抽象:上述內置適配器的超類。如果兩者都不符合您的需求,您可能需要自行實施:

App.adapter = DS.Adapter.create({ 
    find: function(store, type, id) { 
    // ... 
    jQuery.get(... , function(data) { 
     store.load(type, id, data); 
    }); 
    }, 
    createRecord: function(store, type, model) { 
    // ... 
    jQuery.post(... , function(data) { 
     store.didCreateRecord(model, data); 
    }); 
    }, 
    // ... 
}); 
App.store = DS.Store.create({ 
    revision: 4, 
    adapter: App.adapter 
}); 

希望有所幫助。有關更多信息,請參閱自述文件https://github.com/emberjs/data

+0

非常棒的回覆,感謝分享。 – 2014-01-09 16:49:25

相關問題