我在页面的一部分使用angularjs
说单个组件,在许多页面中使用。现在我的问题是哈希网址现在不起作用。
示例:我的页面中有一个div#hello,而URL是以Url#hello的形式给出的。但它不会转到该特定的div,只是页面的顶部是显示的。 那么,你们能帮助我吗?
注意:网址#hello正在更改为url /#hello。页面无法更改为角度,只有该单个组件使用角度。
编辑:谢谢Stephen :)是的,当然,我们需要使用路由。事情是,在页面加载后,如果我们将URL更改回URL#hello它的工作原理。所以是否可以以路由和$angularscroll
之外的其他方式进行此操作?(即)仅从JS
或jQuery
角度进行?
答案 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