我正在使用Ionic Framework开发一个应用程序,并且有多个视图。路线名称为 app.view1 和 app.view2 。我使用$state.go("app.view2")
从控制器转换到下一个视图,当我单击后面时,app.view1的控制器不会再次执行,这在我的应用程序中非常重要。
请告诉我如何在我路由时执行控制器。
答案 0 :(得分:7)
Ionic缓存视图以获得更快的性能。它使用ng-router
。
Ionic将最多缓存10个视图,不仅可以配置这些视图,而且应用程序还可以明确说明应该和不应该缓存哪些视图。
http://ionicframework.com/docs/api/directive/ionNavView/
有多种方法可以解决此问题。
选项1
如果希望控制器在每次显示视图时执行,则可以禁用该特定路径的缓存。
$stateProvider.state('myState', {
cache: false,
url : '/myUrl',
templateUrl : 'my-template.html'
})
或
<ion-view cache-view="false" view-title="My Title!">
...
</ion-view>
选项2
您可以为所有视图禁用缓存。甚至可以控制观看次数。我不知道这对你是否有用。
$ionicConfigProvider.views.maxCache(0);
选项3
我的最爱。您可以使用$ionicView.enter
活动。这可以保证在执行视图时需要执行的代码。所以你可以区分代码应该每次都执行一次。我想这会对性能产生积极影响。
<强>用法强>
$scope.$on('$ionicView.enter', function(){
// Coding
});
祝你好运,编码愉快!