我如何使我的离子按钮刷新所有离子视图.(在大多数情况下,更可取的是重新评估ng开关)

How can I make my Ionic Button refresh all ion-views. (Preferable in most just revaluate a ng-switch)

本文关键字:评估 开关 ng 新评估 在大多数情况下 按钮 我的 何使 刷新 视图      更新时间:2023-09-26

在我看来,我有一个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
  • 的点是它的工作(不清除缓存),当我下次再次打开视图。只是在查看它时不会重新加载

编辑:我还尝试了:

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

还是

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

这似乎不是离子特异性或ng-switch特异性,但似乎ui-router特异性。如果我理解正确,您希望在单击按钮并在Teams上执行一些数据逻辑时刷新视图。我看到这里

$state.go($state.current);

然而,这根本不会为你做,因为你的路径没有改变,你的控制器将不会重新运行。然而,$state.go()提供了额外的参数,包括我们需要的一个参数——reload

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

这将刷新你的视图并重新运行你的控制器,所以你会看到这反映在UI中。看到美元的状态。查看(to [, toParams] [, options])文档


此外,如果您和其他人希望看到实际操作,我已经制作了两个简单的示例。这里的代码绝不是最佳实践驱动的,但确实是自我描述的,足以演示核心问题和解决方案。

JSFiddle示例使用$state.go($state.current, {}, { reload: true });

JSFiddle示例-不工作-仅使用$state.go($state.current);