4

我有一个特殊的问题。我正在使用 anchorScroll 服务将页面滚动到顶部以显示任何消息,例如错误或保存成功消息。我正在保存按钮操作中实现该功能。

这里发生了什么,当我第一次点击按钮时,它会刷新页面,然后当我再次使用它时,我得到了所需的结果。

我想以某种方式阻止它第一次刷新页面。

这个按钮在表单指令之外,尽管我的表单在表单标签内。包含 $anchorScroll 服务

<a id="top"></a>   at the top of my HTML page.

if(data.validateError==true )
                {
                    $scope.saveSuccessfull=false;
                    $scope.wrongInputError=true;
                    $scope.negErrorMessage=false;
                    $scope.loaderDiv=false;
                    $location.hash('top');
                     // call $anchorScroll()
                   $anchorScroll();
4

3 回答 3

14

从这个答案:https ://stackoverflow.com/a/15935517/971这证明对我有类似问题很有用。

var old = $location.hash();
$location.hash('top');
$anchorScroll();
//reset to old to keep any additional routing logic from kicking in
$location.hash(old);

这将防止重新加载。

于 2013-11-14T13:21:02.457 回答
3

@Raulucco 建议的 reloadOnSearch: false 解决方案对我来说效果很好。跟随一个例子

$routeProvider
.when('/search', {
           templateUrl : 'views/search.html', reloadOnSearch: false
 })
于 2015-10-10T13:30:21.027 回答
1

在遇到同样的问题后,我找到了这个答案。我通过创建一个使用 jQuery 进行滚动的新服务来解决它。但我在文档中发现routeProvider可以将属性 reloadOnSearch 设置为 false,这样现在您可以更改哈希并且视图不会重新加载。我发现它是一种更清洁的方式。

于 2014-11-14T13:20:13.787 回答