angularjs $ anchorScroll有时刷新所有页面

时间:2014-09-19 09:32:13

标签: javascript angularjs

我有一个带有angularjs路由的应用程序,但在某些视图上我想滚动到一些特定的div我使用anchorScroll但有时(并非所有时间)它刷新所有页面甚至我停止事件传播。 有人有这个问题吗?

 $scope.redirectTodiv = function(divname,event) {
    event.stopPropagation();  
    event.preventDefault();

    $location.hash(divname);
    $anchorScroll();

 };

3 个答案:

答案 0 :(得分:20)

试试这个

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

 };

答案 1 :(得分:0)

一键式导航的方法是结合$ location.hash()$ anchorScroll并将routeProvider reloadOnSearch属性设置为false,即。 在您的控制器代码中:

$location.hash("editor");
$anchorScroll();

在您的路线提供者中:

$routeProvider.when("/masters/voucher", {
    templateUrl: "views/card/voucher.html",
    reloadOnSearch: false
})

答案 2 :(得分:0)

我在同一页面上有两个用例:

  • 单击“保存”时,如果响应是错误,请滚动到errorDiv,该错误将错误显示给用户。 David Kabii的答案确实对我有用。
  • 但是,在页面的加载中,在控制器中,我想滚动到页面的期望用户输入的特定区域。这行不通。我必须使用window.setTimeout来解决此问题。 (可能是更好的方法)
      window.setTimeout(function(){
        $location.hash("anchorForm");
        $anchorScroll();
      }, 300);