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