转载

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

Posted by:Phodal Huang July 7, 2016, 9:18 p.m.

在实现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);     });  }
原文  http://www.phodal.com/blog/ionic-angular-hybrid-application-clear-cache/
正文到此结束
Loading...