Javascript 如何使我的离子按钮刷新所有离子视图。(在大多数情况下,最好只是重新评估ng开关)

Javascript 如何使我的离子按钮刷新所有离子视图。(在大多数情况下,最好只是重新评估ng开关),javascript,html,angularjs,angular-ui-router,ionic,Javascript,Html,Angularjs,Angular Ui Router,Ionic,在我看来,我有一个ng开关类似: <div ng-switch on="team.isFavorite"> <button class="button button-energized snbutton" ng-switch-when="false" ng-click="makeTeamFavorite()"> Show team on dashboard <

在我看来,我有一个
ng开关
类似:

<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>
我猜它会使所有缓存失效,但它无论如何都不起作用:D

  • 我搜索了一下,但没有找到任何与此相关的东西
  • 我不想用
    cache=false
    标记我的离子视图,并选择退出所有缓存
  • 我认为这是离子特异性的,但可能是我对AngularJS:D普遍缺乏了解
  • 关键是,下次再次打开视图时,它会工作(不清除缓存)。。只是在查看时没有重新加载它
编辑: 我还尝试了:

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

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

不走运

这似乎不是离子特定的,也不是ng交换机特定的,而是ui路由器特定的。如果我理解正确,您希望在单击按钮并在
团队
上执行一些数据逻辑时刷新视图。我在这里看到这个

$state.go($state.current);
然而,这对您来说根本不起作用,因为由于您的路径没有改变,您的控制器将不会重新运行。但是,
$state.go()
提供了额外的参数,其中包括我们需要的参数-
重新加载
。试试下面的

$state.go($state.current, {}, { reload: true }); //second parameter is for $stateParams
这将刷新您的视图并重新运行控制器,因此您将在UI中看到这一点。有关更多信息,请参阅文档


此外,如果你和其他人想看到这一点的行动,我已经精心制作了两个简单的例子。这里的代码决不是最佳实践驱动的,而是自描述性的,足以说明核心问题和解决方案

-工作-使用
$state.go($state.current,{},{reload:true})


-不工作-仅使用
$state.go($state.current)

什么是故事?不清楚你想在这里做什么我认为这个问题很具体,但可能是我对angularjs普遍缺乏了解:我不知道ionic Sorry你是想使用
$Ionicstory.clearCache()?如果您没有
()
,该方法实际上不会被调用。谢谢!我明天再试试,不过你说的话听起来很合理@Daij Djan一定要让我知道进展如何!请就您的发现分享反馈,如果需要,我会尽力提供进一步帮助。另外(听起来很合理)我的控制器没有重新运行:(我调试了代码,$state看起来有效,没有JS错误thrown@Daij-Djan您的控制器肯定应该重新运行
在控制器顶部,当您
$state时,它将注销一条消息。使用
重新加载:true
paramater@Daij-Djan你能为这个机会制造一个打劫器吗?
$state.go($state.current, {}, { reload: true }); //second parameter is for $stateParams