我有一个特殊的问题。我正在使用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();
答案 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,这样现在您可以更改哈希并且视图不会重新加载。我发现它更清洁。