【问题标题】:$state.go() doesn't load controller in ionic application$state.go() 不在离子应用程序中加载控制器
【发布时间】:2015-04-20 08:09:22
【问题描述】:

使用以下代码,当第一次加载带有id=0 的页面时,控制器没有问题。但是,当再次使用相同的id=0 再次加载同一页面时,它不会加载控制器。

$state.go('tab.dash', {
  id: $rootScope.products[CONSTANTS.i].id
}, {
  reload: true
});

它是如何发生的?请给我一个解决方案。

【问题讨论】:

  • 您需要显示更多代码才能全面了解问题所在。
  • 为了更好的性能 ionic 缓存了很多东西,尝试添加这个 cache-view="false"
  • @JesúsQuintana 非常感谢它对我有用
  • reload 属性是 Angular ui 路由器的属性,而不是 ionic。 Ionic 默认缓存你的视图和控制器。看看stackoverflow.com/questions/29792166/… 来解决你的问题

标签: javascript angularjs angular-ui-router ionic-framework ionic


【解决方案1】:

我遇到了类似的问题,每次访问标签时我都需要重新计算统计信息。

您需要禁用视图缓存。您可以在路线设置中这样做。例如:

.state('tab.stats', {
 url: '/stats',
 views: {
   'tab-stats': {
     templateUrl: 'templates/tab-stats.html',
     controller: 'StatsCtrl'
   }
 },
 cache: false
})

【讨论】:

    【解决方案2】:

    好吧,当您缓存视图时(默认情况下为 true),控制器仅在第一次加载,在随后的导航中,它将附加和分离范围。缓存有助于提高单页应用程序的性能。如果您不想禁用缓存,那么您可以使用离子视图事件,例如(进入、离开、加载等)。

     $scope.$on('$ionicView.enter', function () {
                // ur stuff in here....
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 2019-12-08
      • 2023-04-03
      • 1970-01-01
      • 2016-01-12
      相关资源
      最近更新 更多