2015-12-02 122 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); 

$超時的伎倆!