Dai*_*jan 19 html javascript angularjs angular-ui-router ionic
在我看来,我有一个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>
Run Code Online (Sandbox Code Playgroud)
如何让我的Ionic按钮刷新所有离子视图.在大多数情况下,
最好只重新评估a 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);
})
Run Code Online (Sandbox Code Playgroud)
它会使我猜的所有缓存无效,但它无论如何都不起作用:D
cache=false并选择退出所有缓存编辑:我也试过:
$ionicHistory.clearCache();
$state.go($state.current, {}, { reload: true });
Run Code Online (Sandbox Code Playgroud)
要不就
$state.go($state.current, {}, { reload: true });
Run Code Online (Sandbox Code Playgroud)
没运气
这似乎不是离子特定的,也不是ng-switch特定的,但似乎是ui-router具体的.如果我理解正确,您需要在单击按钮并执行某些数据逻辑时刷新视图Teams.我在这看到这个
$state.go($state.current);
Run Code Online (Sandbox Code Playgroud)
但是,这根本不适合你,因为你的路径没有改变你的控制器不会重新运行.但是,$state.go()提供了额外的参数,包括我们需要的参数 - reload.试试以下......
$state.go($state.current, {}, { reload: true }); //second parameter is for $stateParams
Run Code Online (Sandbox Code Playgroud)
这将刷新您的视图并重新运行您的控制器,因此您将在UI中看到这一点.有关更多信息,请参阅$ state.go(to [,toParams] [,options]) docs
此外,如果您和其他人希望看到这一点,我制作了两个简单的例子.这里的代码绝不是最佳实践驱动,但确实是自描述性的,足以证明核心问题和解决方案.
JSFiddle示例 - 工作 - 使用$state.go($state.current, {}, { reload: true });
JSFiddle示例 - 不工作 - 仅使用$state.go($state.current);
| 归档时间: |
|
| 查看次数: |
2913 次 |
| 最近记录: |