Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 链接并滚动到顶部的标准方式?_Javascript_Angularjs - Fatal编程技术网

Javascript 链接并滚动到顶部的标准方式?

Javascript 链接并滚动到顶部的标准方式?,javascript,angularjs,Javascript,Angularjs,我的问题是href保留了滚动位置,但我想让我的链接转到页面顶部;我目前的解决方案感觉不是很干 HTML: 有没有办法做出这样的指令 <a href="" ng-link="'some/page'"> 现在我不需要在每个控制器中重复这个函数,但我认为这是一个避免$rootScope的好地方,如果可能的话,可以学习如何生成指令(服务?)。谢谢 您可以这样做: app.run(function($rootScope, $window) { $rootScope.$on('$ro

我的问题是href保留了滚动位置,但我想让我的链接转到页面顶部;我目前的解决方案感觉不是很干

HTML:

有没有办法做出这样的指令

<a href="" ng-link="'some/page'">

现在我不需要在每个控制器中重复这个函数,但我认为这是一个避免$rootScope的好地方,如果可能的话,可以学习如何生成指令(服务?)。谢谢

您可以这样做:

app.run(function($rootScope, $window) {
     $rootScope.$on('$routeChangeSuccess', function () {
         $window.scrollTo(0,0);
     });
});
任何路线更改时,它都会滚动到顶部

如果您确实希望将其作为指令:

angular.module('app')
    .directive('ngLink', ['$location', '$window', function ($location, $window) {
        return {
            restrict: 'A', //use as attribute 
            replace: false,
            scope: {
               'ngLink' : '@' //so you can do ng-link="some-page"
                              //instead of ng-link="'some-page'"
            },
            link: function (scope, elem) {
                 elem.on('click', function() {
                   $location.path(scope.ngLink);
                   //$window.location.href = scope.ngLink;
                   //you may have to use the line above depending
                   //on how your project is set up
                   $window.scrollTo(0,0);
                 });
            }
        }
    }]);
<a href="" ng-click="goToPage('some/page')"></a>
app.run( function(..., $location) {
    $rootScope.goToPage = function(url) {
        $location.path(url);
        window.scrollTo(0,0);
    }
});
app.run(function($rootScope, $window) {
     $rootScope.$on('$routeChangeSuccess', function () {
         $window.scrollTo(0,0);
     });
});
angular.module('app')
    .directive('ngLink', ['$location', '$window', function ($location, $window) {
        return {
            restrict: 'A', //use as attribute 
            replace: false,
            scope: {
               'ngLink' : '@' //so you can do ng-link="some-page"
                              //instead of ng-link="'some-page'"
            },
            link: function (scope, elem) {
                 elem.on('click', function() {
                   $location.path(scope.ngLink);
                   //$window.location.href = scope.ngLink;
                   //you may have to use the line above depending
                   //on how your project is set up
                   $window.scrollTo(0,0);
                 });
            }
        }
    }]);