你绝对可以做到这一点。就像你说的那样,你需要做很多乐高积木才能把它们放在一起。
您需要使用 RESTAdapter 和 LSAdapter 并创建一个混合体。我们在我的工作中做了一些类似的事情,但它只是一种方式(从服务器到客户端,而不是反向)。
话虽如此,我只想提出几个问题:
您计划在 localStorage 中存储多少,您是否制定了驱逐计划?对于大多数浏览器来说,本地存储通常很小,尽管在大多数浏览器中实现是相同的(直到 IE8 才实现)。IndexedDB 为您提供了更大的空间,但直到 IE 的更高版本才能实现。
根据性能需求,我建议先存储 localStorage,然后尝试持久保存到服务器,如果它可以从 localStorage 弹出,如果它没有将它留在那里供您的适配器稍后尝试。(我会考虑使用 Ember 的 schedule 或 scheduleOnce 或在运行循环中工作的许多其他方便的助手,http ://emberjs.com/api/classes/Ember.run.html#method_schedule )。
Called by the store when a newly created record is
`save`d.
It serializes the record, and `POST`s it to a URL generated by `buildURL`.
See `serialize` for information on how to customize the serialized form
of a record.
createRecord: function(store, type, record) {
var data = {};
var serializer = store.serializerFor(type.typeKey);
serializer.serializeIntoHash(data, type, record, { includeId: true });
// build up a model that knows the url, the method, and the data to post
// store it to local storage in some queue to save
// schedule it to save to server later, keep track of the record since you'll
// need to update the record with new information later that could come down
// from the server
return this.ajax(this.buildURL(type.typeKey), "POST", { data: data });
},
老实说,我认为您可能遇到的最困难的事情是当您没有真正将其保存到服务器时如何处理 id。祝你好运