状态转换后重新加载数据

时间:2015-03-23 13:21:42

标签: angularjs angularjs-routing

调用$ state.transitionTo方法后出现问题。

$ state.transitionTo('example',{},{reload:true});

第一次访问我的视图时,数据已正确加载。如果我手动返回我的应用程序并尝试访问同一页面,则会重新加载数据。 但是,当我调用$ state.transitionTo时,控制器内的代码不会执行,myList也不会更新。

以下是控制器的代码。

        .controller('ExampleCtrl', function 
                   ($scope, $state, $stateParams, Service) {

               $scope.myList= {};

               var exampleCtrl = $scope;
               ProdutorService.findAllData($scope.example.idExample).then(function(data){
                      exampleCtrl.myList = data;
               });
         }

我认为它可能与$ state.reload()中的这个错误有关: (控制器现在重新修复的错误,很快修复)。 https://github.com/angular-ui/ui-router/wiki/Quick-Reference#statereload

在状态转换后是否有强制执行控制器代码或调用控制器功能的选项?

我正在使用带离子和cordova的angularjs。这是一个移动应用程序。

2 个答案:

答案 0 :(得分:2)

我找到了解决方案。

负责缓存的是离子框架。

默认情况下,Ionic会缓存所有视图以提高性能。为了避免这种情况,需要在状态定义中添加cache:false。

        .state('example', {
            url: "/example",
            templateUrl: 'templates/example.html',
            controller: 'ExampleCtrl',
            cache: false
        })

这样,我的数据正在刷新。

答案 1 :(得分:0)

您还可以使用$ionicView.enter侦听器来更新数据,这样就不需要重新创建整个视图。

向下滚动以查看this blog post

中的生命周期