【问题标题】:ui.router not reloading controllerui.router 不重新加载控制器
【发布时间】:2015-06-23 11:44:20
【问题描述】:

我正在使用 Ionic Framework 开发一个应用程序,并且有多个视图。路由名称为 app.view1app.view2。我使用$state.go("app.view2") 转换到控制器的下一个视图,当我点击返回时,app.view1 的控制器不会再次执行,这在我的应用程序中非常重要。

请告诉我如何在我路由到控制器时执行控制器。

【问题讨论】:

  • 能否提供定义状态的代码?

标签: javascript angularjs ionic-framework


【解决方案1】:

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
});

祝你好运,编码愉快!

【讨论】:

    猜你喜欢
    • 2017-04-24
    • 1970-01-01
    • 2014-06-07
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多