我正在使用ui-router,并且试图在控制器中自动滚动。
但是anchorScroll似乎无能为力,我的猜测是它不喜欢URL中的两个#。

例:

index.php#/ initiative / 1 / commentscroll / 4

变成:

index.php#/ initiative / 1 / commentscroll / 4#comment-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);
    }
}
}]);

最佳答案

我修复了它,这是一个“定时”问题。

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


$ timeout可以解决问题!

10-08 04:34