angularjs中的页面刷新问题

时间:2013-11-14 13:13:45

标签: angularjs

我有一个特殊的问题。我正在使用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();

3 个答案:

答案 0 :(得分: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);

这将阻止重新加载。

答案 1 :(得分:3)

@Raulucco建议的reloadOnSearch:false解决方案对我来说很好。下面是一个例子

$routeProvider
.when('/search', {
           templateUrl : 'views/search.html', reloadOnSearch: false
 })

答案 2 :(得分:1)

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