in my view I have a ng-switch like:
<div ng-switch on="team.isFavorite">
    <button class="button button-energized snbutton" ng-switch-when="false" ng-click="makeTeamFavorite()">
      Show team on dashboard
    </button>
    <p class="snmsg" ng-switch-default>
      This team is shown on the dashboard
    </p>
</div>
How can I make my Ionic Button refresh all ion-views.
Preferable in most just reevaluate a ng-switch, in 1 reload EVERYTHING)
.controller('List-PeopleCtrl', function($ionicHistory, $state, $scope, $stateParams, Teams) {
  $scope.makeTeamFavorite = function() {
      Teams.setFavoriteId($stateParams.teamId);
      $ionicHistory.clearCache();
      $state.go($state.current);
  }
  $scope.team = Teams.get($stateParams.teamId);
  $scope.team.isFavorite = Teams.getFavoriteId()==$stateParams.teamId;
  $scope.people = Teams.members($stateParams.teamId);
})
it would invalidate all caches I guess but it didn't work anyway :D
cache=false and opt out of all cachingEDIT: I also tried with:
      $ionicHistory.clearCache();
      $state.go($state.current, {}, { reload: true });      
or just
      $state.go($state.current, {}, { reload: true });      
NO LUCK
This doesn't seem to be ionic specific nor ng-switch specific, but seems to be ui-router specific. If I understand correctly, you want to refresh your view when you click your button and execute some data logic on Teams. I see this here
$state.go($state.current);
However, this simply won't do it for you because since your path has not changed your controller will not re-run. However, $state.go() offers additional parameters, including one we need for just this - reload. Try the following...
$state.go($state.current, {}, { reload: true }); //second parameter is for $stateParams
This will refresh your views and re-run your controller, so you'll see this reflected in the UI. See $state.go(to [, toParams] [, options]) docs for more information
Furthermore, if you and others would like to see this in action I have crafted two simplistic examples. The code here is by no means best-practice driven, but is indeed self-descriptive enough to demonstrate the core issue and solution.
JSFiddle Example - working - using $state.go($state.current, {}, { reload: true });
JSFiddle Example - not working - using only $state.go($state.current);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With