在角度/离子的后退按钮上刷新页面

时间:2016-07-11 11:20:44

标签: javascript angularjs ionic-framework

我正在尝试刷新后退按钮上的页面以获取文章列表的新数据。更具体地说,我有一篇文章列表和文章页面,我可以选择喜欢一篇文章。当用户喜欢文章页面上的文章时,如果它点击后退按钮,则文章列表页面上的类似图标将不会使用新状态刷新。我尝试过单击后退按钮,然后再次获取数据,但图标不会改变。我在console.log上获得的数据是新数据,我得到like=1的值,如果用户喜欢该文章,则该值是正确的,但图标不会更改。 这是我的代码:

我在头版控制器中收到了这样的文章:

ArticleService.all().then(function(data){
    $scope.articles = data;
  })

在我的文章页面html中,我有一个后退按钮链接:

<a ng-click="refresh()"></a>

在我的文章列表中,我检查了我喜欢的值,然后根据它显示图标:

<a ng-if="article.like == 1" ng-click="like(article)" class="subdued">
              <img class="social-images" src="icons/heart.svg"/> Lik
            </a>
            <a ng-if="article.like == 0" ng-click="like(article)" class="subdued">
              <img class="social-images" src="icons/heart-outline.svg"/> Lik
            </a>

这是我在文章控制器中的功能:

$scope.refresh = function (){
    return $state.go('main.front').then(function(state) {
      ArticleService.all().then(function(data){
        $scope.articles = data;
        console.log(data);
      })
    })
  };

但由于该功能在文章控制器中,因此无法刷新首页上的数据。如何从具有不同控制器的页面刷新首页控制器中的数据?

2 个答案:

答案 0 :(得分:2)

$stateProvider.state('myState', {
   cache: false,
   url : '/myUrl',
   templateUrl : 'my-template.html'
})

尝试在您的州内添加cache : false,以便在输入时重新加载状态

答案 1 :(得分:1)

尝试以下方法之一:

1

 $scope.$on('$ionicView.beforeEnter', function () {
           $scope.refresh();
        });

$scope.refresh = function (){
        return $state.go('main.front').then(function(state) {
          ArticleService.all().then(function(data){
            $scope.articles = data;
            console.log(data);
          })
        })
      };

2

 $scope.$on('$tateChangeSuccess', function () {
           $scope.refresh();
        });
  1. 可能是缓存问题。所以添加,
  2. <ion-view cache-view="false" view-title="My Title!">
      </ion-view>