Подтвердить что ты не робот

Как я могу сделать свою ионическую кнопку обновлять все ионы. (Предпочтительно в большинстве случаев просто переоценить ng-переключатель)

На мой взгляд, у меня есть ng-switch как:

<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>

Как я могу сделать свою ионную кнопку обновлять все виды ионов.
Предпочтительно в большинстве случаев просто переоценить ng-switch, в 1 перезагрузить ВСЕ)

Что я пытался в контроллере:

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

это приведет к аннулированию всех кешей, которые я предполагаю, но это не сработало: D

Примечание

  • Я искал, но ничего не нашел для этого.
  • Я не хочу отмечать мой просмотр с помощью cache=false и отказаться от кэширования
  • Я думаю, что это ионный специфический, но это может быть мой общий недостаток знаний относительно AngularJS: D
  • точка работает (без очистки кеша), когда я снова открываю представление снова, просто не перезагружая его, глядя на него

EDIT: Я также пробовал:

      $ionicHistory.clearCache();
      $state.go($state.current, {}, { reload: true });      

или просто

      $state.go($state.current, {}, { reload: true });      

НЕТ УДАЧИ

4b9b3361

Ответ 1

Это, по-видимому, не является специфическим по отношению к ионной, а ng-switch специфическим, но, по-видимому, специфическим. Если я правильно понимаю, вы хотите обновить свое представление, когда вы нажимаете кнопку и выполняете некоторую логику данных на Teams. Я вижу это здесь.

$state.go($state.current);

Однако это просто не сделает этого для вас, потому что, поскольку ваш путь не изменился, ваш контроллер не будет повторно запускаться. Однако $state.go() предлагает дополнительные параметры, в том числе необходимые только для этого - reload. Попробуйте следующее...

$state.go($state.current, {}, { reload: true }); //second parameter is for $stateParams

Это обновит ваши представления и перезапустит ваш контроллер, так что вы увидите, что это отражено в пользовательском интерфейсе. См. $state.go(для [, toParams] [, options]) для получения дополнительной информации


Кроме того, если вы и другие хотели бы видеть это в действии, я разработал два упрощенных примера. Код здесь ни в коем случае не является оптимальной практикой, но на самом деле является самоописательной, чтобы продемонстрировать основную проблему и решение.

Пример JSFiddle - рабочий - с помощью $state.go($state.current, {}, { reload: true });

Пример JSFiddle - не работает - используя только $state.go($state.current);