2017-08-15 13 views
0

我有这一段代码中的导航栏更改显示的URL用于使用AngularJs

<li><a href=#products?scrollTo=products">Products</a></li> 

这在控制器

$scope.$on('$routeChangeSuccess', function (newRoute, oldRoute) { 
$location.hash($routeParams.scrollTo); 
$anchorScroll(); 
}); 

,这在配置

$routeProvider.when('/products', { templateUrl: '../pages/home/home.html', 
controller : 'mainController' }); 
自定义一个

它确实按预期工作,因为它滚动到#products div所在的位置,即使我不在主页中。 (返回到主页并自动向下滚动)。

现在,它说的网址/产品?scrollTo =产品#产品

有没有办法改变这种状况的东西更像www.home.com或www.home.com/products?

谢谢!

回答

0

您可以将散列传递给$ anchorScroll,并且它会在不加入URL的情况下到达那里。

$scope.$on('$routeChangeSuccess', function (newRoute, oldRoute) { 
    $anchorScroll($routeParams.scrollTo); 
}); 
+0

看起来这部分

  • Products
  • 是一个使URL,因为我确实如你所说,我仍然有“怪异”的网址,但现在的网页不滚动到所需的部分 – user3074989

    +0

    有时候你必须在超时时将调用包装为$ anchorScroll,例如:。$ timeout(()=> {$ anchorScroll(“tr_”+ id)},0) –