Как я могу сделать свою ионическую кнопку обновлять все ионы. (Предпочтительно в большинстве случаев просто переоценить 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 });
НЕТ УДАЧИ
Ответы
Ответ 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);