如果您有一个控制器来操作Angular.js中的$scope变量,有没有一种惯用的方法来:
对于复杂的控制器,不必将每个变量重置为其初始值将非常方便,特别是如果您真正想要的是控制器和作用域的简单重新初始化。不过,通过$location.path()
再次导航到相同的网址并没有什么帮助。
编辑:假设我不能使用任何$window.location
攻击,因为这会违反Chrome Packaged中的CSP。
发布于 2013-07-02 06:20:08
在询问之后,我终于找到了一种使用$route.reload()
解决这个问题的方法。
myapp.Controller('SampleController', function($location, $route) {
$scope.navTo = function(url) {
if ($location.path() === url) {
$route.reload();
} else {
$location.path(url);
}
}
});
我仍然在想,一定有更优雅的解决方案,但这对我来说肯定是有效的。
发布于 2015-12-21 00:34:00
如果你使用的是angular-ui-router,那么你应该这样做:
myapp.Controller('SampleController', function($state) {
$scope.navigate = function (stateName) {
if ($state.is(stateName)) {
$state.reload();
} else {
$state.go(stateName);
}
}
});
https://stackoverflow.com/questions/17413760
复制相似问题