我需要这个相同的功能,这里就是我想出了:
正如所叙述的,您需要在路线中转入reloadOnSearch = false
。但是大多数时候,你希望它像以前一样设置为true
。你只是想在某些情况下跳过。所以我说这我的控制器:
$rootScope.skipNextSearchChangeReload = false;
$scope.$on('$routeUpdate', function(){
if (!$rootScope.skipNextSearchChangeReload) {
$route.reload();
} else {
// skip reload, but reset to stop skipping
$rootScope.skipNextSearchChangeReload = false;
}
});
var updateSearchWithoutReload = function(key, values) {
$rootScope.skipNextSearchChangeReload = true;
$location.search(key, values);
};
然后到URL的所有变化仍然会重新如常。但是当你想跳过重新加载时,你可以拨打updateSearchWithoutReload(key, values);
,它会跳过这个电话。然后,在跳过之后,它将重置为不跳过重新加载。
我试过只设置$rootScope.skipNextSearchChangeReload = true
,然后$location.search(k, v)
然后$rootScope.skipNextSearchChangeReload = false
,但显然这些事件并没有传播都是通过和skipNextSearchChangeReload
设置为false
它跳过了以前的样子。所以这是我能想到的最好的。
见http://stackoverflow.com/questions/19137504/force-angularjs-to-reload-a-route-although-option-reloadonsearch-is-set-to-false –
我想做与那篇文章中描述的完全相反 – Justin
这是一样的。您需要挂钩$ routeUpdate,并委托给$ route.reload(),除非您更新路由... –