我正在使用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>
我的问题是,当我点击链接时,页面会向下滚动,但在50%的情况下,页面会重新加载,因为URL中的哈希值会发生变化。
如何防止Angular重新加载页面?
更新:我在这里找到了
https://groups.google.com/forum/?fromgroups=#!msg/angular/BY2ekZLbnIM/MORF-z2vHnIJ
那个啊
$location服务广播$locationChangeStart事件。您可以观察并调用该事件。preventDefault()停止导航。很好
有人能告诉我们如何观察这一事件并防止违约吗
我想这可能对你有帮助
$scope.redirectTodiv = function(divname,event) {
var id = $location.hash();
$location.hash(divname);
$anchorScroll();
$location.hash(id);
};
来自:https://stackoverflow.com/a/25930875/4138368
您可以将$event参数添加到ng click处理程序中:
<a ng-click="scrollTo('foo', $event)">Foo</a>
在scrollTo函数中,您可以执行以下操作:
scope.scrollTo = function(str, event) {
event.preventDefault();
event.stopPropagation();
/** SOME OTHER LOGIC */
}
但这意味着您应该手动从“a”元素中解析目标锚点哈希。
发生刷新是因为调用了locationChangeStart事件。您可以通过执行以下操作来停止此操作:
scope.$on('$locationChangeStart', function(ev) {
ev.preventDefault();
});
实际上,我最终编写了自己的scrollTo指令,在指令中使用了这个调用。
Plnkr/Github
这是我的另一篇文章
问题内容: 例如,我希望此导航更改可重新加载状态: 但我不希望此导航重新加载状态: 根据ui-router文档,设置应可完成此操作,但请尝试以下操作。当为时,即使文档说应该更改路径参数,它也不会重新加载状态。 Plunkr:http: //run.plnkr.co/ZPy9uabYlkMilwdS/#/param 问题答案: 这是UI-Router中的错误,已在0.2.15版中修复: https:
问题内容: 我有http://mysite.com/index.php。 还有一个子菜单 主页=> http://mysite.com/index.php 关于我们=> http://mysite.com/about.us.php 产品=> http://mysite.com/products.php 但我希望http://mysite.com/index.php处理每个请求,并仅使用Ajax请求
问题内容: 嘿,我注意到在浏览GitHub存储库时,它使用AJAX加载每个文件夹/文件。 我了解所有这些,我只是想知道他们如何更改URL。您可以使用JavaScript获取并设置URL吗?如果是这样,对于将基于JavaScript的网站的一部分添加为书签可能非常有用。(其中的几页,通过JavaScript在其中移动) 谢谢。 问题答案: 它在历史记录操作API中使用了新的push/ pop状态功能
问题内容: 我有以下代码: MainActivity.java TabsPagerAdapter.java 我正在制作一个图书馆应用程序,其中导航是通过选项卡进行的,问题是每次我从第三个选项卡转到第一个或第一个至第三个时,选项卡的内容都在刷新,我想防止刷新,任何请帮助 ? 问题答案: 默认情况下,在滑动页面时会重新创建片段。为防止这种情况,您可以尝试以下三种方法之一: 1. 在您的片段中,呼叫。
问题内容: 我有两个定义如下的实体bean(删除了无关的东西): CriticalItems定义如下: 在我的DAO代码中-我有以下方法: 当我加载MasterItem时,它会正确加载,并且还会按照指示加载CriticalItems Set中的数据。然后,我将此数据发送到我的UI,并获得更新的副本,然后尝试将其保留。用户更新MasterItem对象中的字段,但不触摸CriticalItems Se
问题内容: 如何动态更改JAXWS客户端使用的地址?该客户端是由wsimport生成的。 问题答案: 使用Apache CXF解决了该问题。 仅用两行代码!这是代码段: