我有一个使用 ember-rails gem 与 rails 应用程序交互的 ember 应用程序。
我想使用 localStorage 适配器来存储产品列表,一旦它们通过 rest api 从服务器下载。
然后,如果应用程序离线,ember 可以使用 localStorage 数据,而不是向 rails 应用程序请求数据。
有没有办法做到这一点?
我有一个使用 ember-rails gem 与 rails 应用程序交互的 ember 应用程序。
我想使用 localStorage 适配器来存储产品列表,一旦它们通过 rest api 从服务器下载。
然后,如果应用程序离线,ember 可以使用 localStorage 数据,而不是向 rails 应用程序请求数据。
有没有办法做到这一点?
我已经按照这些思路做了一些事情。这不处理何时刷新缓存,以及类似的事情。但是,它将为您提供一种从 localStorage 初始加载项目的方法,然后如果网络不可用,则内容将保留为本地数据。您当然可以大大扩展它来满足您的需求。
App.PhotoCategories = Ember.Object.extend
init: ->
@_super()
@loadPhotoCategories
loadPhotoCategories: () ->
# load cached categories from local storage
@set 'content', @getFromCache("photoCategories")
if @content?
if @content.length == 0
$.ajax
type: "POST"
url: "/api/getCategories"
success: (data) =>
if !data.error
@set 'content', []
for category in data
@pushObject category
# save categories to local storage
@saveToCache("photoCategories", @content)
saveToCache: (key, data) ->
if @supportsHtml5Storage()
localStorage.setItem(key + '_LastUpdatedAt', new Date())
localStorage.setItem(key, JSON.stringify(data))
true
else
false
getFromCache: (key) ->
if @supportsHtml5Storage()
data = localStorage[key]
if data?
JSON.parse(localStorage[key])
else
null
else
null
supportsHtml5Storage: ->
try
return "localStorage" of window and window["localStorage"] isnt null
catch e
return false