哈希网址和AngularJS

时间:2016-11-24 11:50:27

标签: javascript angularjs

我在页面的一部分使用angularjs说单个组件,在许多页面中使用。现在我的问题是哈希网址现在不起作用。

示例:我的页面中有一个div#hello,而URL是以Url#hello的形式给出的。但它不会转到该特定的div,只是页面的顶部是显示的。 那么,你们能帮助我吗?

注意:网址#hello正在更改为url /#hello。页面无法更改为角度,只有该单个组件使用角度。

编辑:谢谢Stephen :)是的,当然,我们需要使用路由。事情是,在页面加载后,如果我们将URL更改回URL#hello它的工作原理。所以是否可以以路由和$angularscroll之外的其他方式进行此操作?(即)仅从JSjQuery角度进行?

1 个答案:

答案 0 :(得分:0)

好的,谢谢。我误解了你。我想我现在有了更好的理解。如果我错了,请纠正我:

因此,您实际上是在尝试制作指向同一页面内某个部分的this.superTabControl1.SelectedTab.Close(); 链接。当您将网址更改为hello时,网页应跳至ID为pageUrl#hello的ID。

但问题是,由于您的部分有一个使用hello模块的AngularJS组件,因此此路由功能会使您的页面重定向到ngRoute,而不是使用{{跳转到HTML部分1}}。

这是对的吗?

<强>解决方案

如果我正确理解您的问题,解决方法是检查pageUrl/#hello标记是否在id='hello'标记上。如果是,则将其向下移动到组件的父元素。

如果哈希链接是ng-app='appName'元素的子元素,那么当您单击它时,AngularJS认为您想要重定向到另一个视图。这是导致body链接重定向到ng-app的原因。

Home

因此,如果您将哈希链接放在pageUrl#/home元素之外,那么当您单击它时它将按预期运行。

<body ng-app="demoApp">
    <a href="#hello">Hello</a> <!-- redirects to #/hello -->
    <div id="hello"></div>

<!-- ... -->

在页面加载

如果您希望页面在页面加载时跳转到ng-app div,请在控制器内设置<body> <a href="#hello">Hello</a> <!-- jumps to the 'hello' div --> <div id="hello" ng-app="demoApp"></div> <!-- ... --> 。然后,当您访问hello时,应显示window.location = '#hello' div,而不是页面顶部。

如果您没有控制器,或者不想使用控制器,则在加载文档后,检查哈希网址并以编程方式更改。

pageUrl#hello