Blog

Blog

PHODAL

Ionic Angular.js 混合应用缓存处理

在实现Ionic应用上的缓存时,遇到一些有意思的需求。

Ionic 不缓存数据

要实现这个功能的话,在Ionic有一个很简单的做法就是,直接在模板上加一个cache-view="false"

<ion-view cache-view="false" view-title="My Title!">
  ....
</ion-view>

这样的话,我们就可以很简单的实现这个功能了。但是问题来了,当我们后退的时候页面就会特定慢——因为没有缓存。

这时试着寻找了别的方法,如:

$state.go($state.current, {}, {reload: true});

又或者是:

$window.location.reload(true)

但是不能像预期一样工作。。

Ionic进入时不缓存,后退时缓存

于是便想了个方法,就是判断是不是后退。如果不是的话,调用数据:

 $scope.$on("$ionicView.beforeEnter", function() {
      function clearCacheForDetailPage() {
        var history = $ionicHistory.forwardView();
        var isLastViewCommentPages = history && history.stateName && (history.stateName === 'CommentView');
        if (!isLastViewCommentPages) {
          init();
        }
      }
      clearCacheForDetailPage();
    })

即,在这个时间调用init()方法,随后在首页清除数据:

  $scope.$on("$ionicView.beforeEnter", function() {
    var clearHistoryForIndexPage = function() {
      var history = $ionicHistory.forwardView();
      if(history && history.stateName) {
        $ionicHistory.clearHistory();
      }
    };
    clearHistoryForIndexPage();
  });

清除Angular Directive缓存

随后又遇到了一个有意思的问题,就是Directive是有缓存的,这时候又要逐一修改这些Directvie:

做法大致如下:

link: function(scope, element, attrs) {
    function render (value) {
        //
    );
    render($scope.value);
    scope.$watch("value",function(value) {
       render(value);
    });
 }

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806

新书《全栈应用开发:精益实践》

这不是一本深入前端、后台、运维、设计、分析等各个领域的书籍。本书以实践的方式,将这一系列的领域及理论知识结合到一起,来帮助读者构建全栈Web 开发的知识体系,并辅以精益及敏捷的思想,来一步步开发Web 应用:从创建一个UI 原型到编写出静态的前端页面;从静态的前端页面到带后台的应用,并部署应用;从Web 后台开发API 到开发移动Web 应用。在这个过程中,我们还将介绍一些相辅相成的步骤:使用构建系统来加速Web 应用的开发;为应用添加数据分析工具来改进产品;使用分析工具来改善应用的性能;通过自动化部署来加快上线流程;从而帮助读者开发出一个真正可用的全栈 Web 应用。同时,我们也将帮助读者把这些步骤应用到现有的系统上,改进现有系统的开发流程。

comment

Feeds

RSS / Atom

最近文章

关于作者

Phodal Huang

Developer, Consultant, Writer, Designer

ThoughtWorks 高级咨询师

工程师 / 咨询师 / 作家 / 设计学徒

开源深度爱好者

出版有《前端架构:从入门到微前端》、《自己动手设计物联网》、《全栈应用开发:精益实践》

联系我: h@phodal.com

微信公众号: 与我沟通

标签