如果您有一个控制器来操作 Angular.js 中的 $scope 变量,是否有一种惯用的方法:
- 重置控制器的 $scope,并且
- 重启控制器初始化?
对于复杂的控制器,不必将每个变量都重置为其初始值会非常方便,特别是如果您真正想要的是控制器和范围的简单重新初始化。但是,再次导航到相同的 URL$location.path()
并没有帮助。
编辑:假设我不能使用任何$window.location
hack,因为这会违反 Chrome 打包应用程序中的 CSP。
如果您有一个控制器来操作 Angular.js 中的 $scope 变量,是否有一种惯用的方法:
对于复杂的控制器,不必将每个变量都重置为其初始值会非常方便,特别是如果您真正想要的是控制器和范围的简单重新初始化。但是,再次导航到相同的 URL$location.path()
并没有帮助。
编辑:假设我不能使用任何$window.location
hack,因为这会违反 Chrome 打包应用程序中的 CSP。
在询问之后,我终于找到了一种使用$route.reload()
.
myapp.Controller('SampleController', function($location, $route) {
$scope.navTo = function(url) {
if ($location.path() === url) {
$route.reload();
} else {
$location.path(url);
}
}
});
我仍在想,必须有一些更优雅的解决方案,但这绝对适合我。
如果你使用 angular-ui-router 那么你应该这样做:
myapp.Controller('SampleController', function($state) {
$scope.navigate = function (stateName) {
if ($state.is(stateName)) {
$state.reload();
} else {
$state.go(stateName);
}
}
});