2015-12-02 130 views
1

我使用UI路由器,我想在控制器中自动滚动。 然而,anchorScroll似乎什么都不做,我的猜测是它不喜欢URL中的两个#。AngularJS anchorScroll不滚动,UI路由器

实施例:

的index.php#/主动/ 1/commentscroll/4

变成:

的index.php#/主动/ 1/commentscroll/4#注释-ID- 4

但滚动不这样做(是实际存在的锚;)

任何想法?

controllersModule.controller('InitiativeController', ['$http','$timeout','$location','$state','services','$stateParams','$anchorScroll', function($http,$timeout,$location,$state,services,$stateParams,$anchorScroll){ 
var pk = this; 
pk.initiative={}; 

if($state.current.url.indexOf("/commentscroll/")!=1){ 
    $timeout(function() { 
     $location.hash('comment-id-'+$stateParams.commentId); 
     $anchorScroll(); 
    }); 
} 


services.get($stateParams.initiativeId,'initiative','').then(function(data){ 
    pk.initiative=data; 

}); 

function fillScrollId(element,index,array){ 
    if(element.initiative_comment_id===$stateParams.commentId){ 
     element.scrollToMe="yes"; 
    } 
    if(element.comments.length>0){ 
     element.comments.forEach(fillScrollId); 
    } 
} 
}]); 

回答

2

我固定它,这是一个 '时机' 问题..

$location.hash('comment-id-'+$stateParams.commentId); 
$timeout(function(){$anchorScroll()}, 800); 

$超时的伎俩!