Javascript 如何在地址更改时停止重新加载

Javascript 如何在地址更改时停止重新加载,javascript,angularjs,Javascript,Angularjs,我正在使用Angular的滚动键和主播滚动键,如下所示: app.controller('TestCtrl', function($scope, $location, $anchorScroll) { $scope.scrollTo = function(id) { $location.hash(id); $anchorScroll(); } }); <a ng-click="scrollTo('foo')">Foo</a> <

我正在使用Angular的
滚动键
主播滚动键
,如下所示:

app.controller('TestCtrl', function($scope, $location, $anchorScroll) {
   $scope.scrollTo = function(id) {
      $location.hash(id);
      $anchorScroll();
   }
});

<a ng-click="scrollTo('foo')">Foo</a>

<div id="foo">Here you are</div>
app.controller('TestCtrl',函数($scope、$location、$anchorScroll){
$scope.scrollTo=函数(id){
$location.hash(id);
$anchorScroll();
}
});

$location服务广播$locationChangeStart事件。您可以观察并调用event.preventDefault()停止导航。很好


任何人都可以告诉我们如何观察该事件并防止默认情况下在rootScope上发出该事件,这样您就可以使用
$on
方法注册一个观察者。

$scope.$on(“$locationChangeStart”,函数(ev){
ev.preventDefault();
});

您可以将$event参数添加到ng click处理程序中:

<a ng-click="scrollTo('foo', $event)">Foo</a>

但这意味着您应该手动解析来自“a”元素的目标锚散列。

正在进行刷新,因为调用了locationChangeStart事件。您可以通过执行以下操作来停止此操作:

scope.$on('$locationChangeStart', function(ev) {
    ev.preventDefault();
});
实际上,我最终编写了自己的scrollTo指令,在指令中使用了这个调用

/


要防止页面以角度锚重新加载,请添加空href属性

<a href ng-click="scrollTo('foo')">Foo</a> OR <a href="" ng-click="scrollTo('foo')">Foo</a>

医生:

我想这可能对你有帮助

$scope.redirectTodiv = function(divname,event) {
    var id = $location.hash();
    $location.hash(divname);
    $anchorScroll();
    $location.hash(id);
};

from:

我已经将其放入scrollTo函数中,它可以工作,但问题是,我在左侧菜单上的另一次单击停止工作,因为这也会更改哈希。我怎么能只在点击特定的链接时才阻止它呢?我不知道你是否能做到。您可能还需要使用
$anchorScroll()
管理这些链接,或者重新考虑您的设计。顺便说一句,该代码段进入控制器函数,而不是
scrollTo
函数。
$scope.redirectTodiv = function(divname,event) {
    var id = $location.hash();
    $location.hash(divname);
    $anchorScroll();
    $location.hash(id);
};