首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ember-data 2.0和脱机

ember-data 2.0和脱机
EN

Stack Overflow用户
提问于 2015-09-10 20:42:53
回答 1查看 473关注 0票数 1

我正在创建一个新的ember应用程序。我想使用最新版本的ember-data。(ember-data 2.0)。我希望它是一个移动网络应用程序。因此,它必须处理可变的网络访问,甚至离线。我希望它将所有数据存储在本地,并在离线时使用这些数据,这样无论网络连接如何,用户都能获得相同的体验。

ember-data 2.0是否能够处理离线情况?我是不是只需要做一个适配器来检测离线/在线,然后再做...?

或者,我必须创建自己的中间层来隐藏对ember-data的离线处理吗?

有没有解决这个问题的库?我已经找到了一些,但是有没有最新版本的ember-data?

EN

回答 1

Stack Overflow用户

发布于 2015-09-11 04:22:26

如果设备将离线,并且用户将尝试转换到尚未加载模型的路由,则会出现错误。您需要自己处理这些情况。例如,您可以创建一个包含错误消息和刷新按钮的漂亮页面。为此,您需要:

首先,在应用程序路由中,创建错误操作(它将在模型钩子期间捕获错误),当错误发生时,将转换保存在内存中。不要试图为这个任务使用本地存储,它将只保存属性,而我们需要一个实际的转换对象。在控制器中使用window.failedTransition或inject并路由一个简单的对象,该对象将包含一个失败的转换。

代码语言:javascript
复制
actions: {
  error: function (error, transition) {
    transition.abort();
    /**
     * You need to correct this line, as you don't have memoryStorage
     * injected. Use window.failedTransition, or create a simple
     * storage, Iy's up to you.
     */
    this.get('memoryStorage').set('failedTransition', transition); 
    return true; //This line is important, or the whole idea will not work
  }
}

其次,创建一个错误控制器和模板。在错误控制器定义动作中,retry

代码语言:javascript
复制
actions: {
  retry: function () {
    /**
     * Correct this line too
     */
    var transition = this.get('memoryStorage').getAndRemove('failedTransition');
    if (transition !== undefined) {
      transition.retry();
    }
  }
}

最后,在error模板中显示状态和错误文本(如果有)以及一个按钮,其中包含用于重试转换的操作。

这是一个简单的解决方案,对于简单的情况(设备只离线几秒钟),也许你需要更复杂的东西。如果你想要你的应用程序在没有网络访问的情况下完全工作,那么你可能想要为所有的数据使用本地存储(有一个附加的https://github.com/funkensturm/ember-local-storage),并时不时地将其与服务器同步(即每10秒在后台同步数据)。不幸的是,我没有尝试过这样的事情,但我认为这是可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32502236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档