简体   繁体   English

滚动到页面顶部,使用ng-init导航页面

[英]Scroll to the top of the page, with a page using ng-init to navigate

I'm using ng-click="$parent.myExp='" to navigate my ng-template pages. 我正在使用ng-click =“ $ parent.myExp ='”浏览我的ng-template页面。 The reason that all of the lorem ipsum is shown is that I am having a problem with the the page scrolling back to the top when navigating. 显示所有lorem ipsum的原因是我在导航时页面滚动回到顶部时遇到问题。 I want to include some jQuery code which will scroll to the top of the page. 我想包含一些jQuery代码,这些代码将滚动到页面顶部。 I'm adding the .scrollTop class to the button and using the jQuery code underneath. 我将.scrollTop类添加到按钮,并在下面使用jQuery代码。 Unfortunately that doesn't work. 不幸的是,这不起作用。 Any thoughts on how I can scroll to the top of the page, with a page using ng-init to navigate? 关于如何使用ng-init导航到页面顶部的任何想法? If I can do this with just using Angular that would be awesome. 如果我可以仅使用Angular做到这一点,那就太好了。

jQuery jQuery的

$('.scrollTop').on('click', function() {
  scrollToTop();
});

function scrollToTop() {
  $('html, body').animate({
    scrollTop: $("header").offset().top
  }, 500);
}

angular code 角度代码

<div ng-init="myExp='one'">

  <div class="my-slide-container">
    <div ng-include="myExp" class="my-slide-animation marketing"></div>

  <script type="text/ng-template" id="one">
    <div class="animation-width">
      <h1>This is my first frame</h1>
      <div class="btns-centered">
        <button class="btn-lg btn-primary scrollTop" ng-click="$parent.myExp='two'">Next</button>
        <!--<a class="btn-back" href="/#">Back</a>-->
      </div>
    </div><!-- /.animation-width -->
  </script><!--/#one -->

  <script type="text/ng-template" id="two">
      <div class="animation-width">
          <h2>This is the second frame</h2>
          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.</p>

          <p>Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.</p>

          <p>Suspendisse lectus leo, consectetur in tempor sit amet, placerat quis neque. Etiam luctus porttitor lorem, sed suscipit est rutrum non. Curabitur lobortis nisl a enim congue semper. Aenean commodo ultrices imperdiet. Vestibulum ut justo vel sapien venenatis tincidunt. Phasellus eget dolor sit amet ipsum dapibus condimentum vitae quis lectus. Aliquam ut massa in turpis dapibus convallis. Praesent elit lacus, vestibulum at malesuada et, ornare et est. Ut augue nunc, sodales ut euismod non, adipiscing vitae orci. Mauris ut placerat justo. Mauris in ultricies enim. Quisque nec est eleifend nulla ultrices egestas quis ut quam. Donec sollicitudin lectus a mauris pulvinar id aliquam urna cursus. Cras quis ligula sem, vel elementum mi. Phasellus non ullamcorper urna.</p>

          <p>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In euismod ultrices facilisis. Vestibulum porta sapien adipiscing augue congue id pretium lectus molestie. Proin quis dictum nisl. Morbi id quam sapien, sed vestibulum sem. Duis elementum rutrum mauris sed convallis. Proin vestibulum magna mi. Aenean tristique hendrerit magna, ac facilisis nulla hendrerit ut. Sed non tortor sodales quam auctor elementum. Donec hendrerit nunc eget elit pharetra pulvinar. Suspendisse id tempus tortor. Aenean luctus, elit commodo laoreet commodo, justo nisi consequat massa, sed vulputate quam urna quis eros. Donec vel.</p>
          <button class="btn-lg btn-primary scrollTop" ng-click="$parent.myExp='three'">Next</button>
          <a class="btn-back" ng-click="$parent.myExp='one'">Back</a>
      </div><!-- /.animation-width -->
    </script><!--/#two -->

  <script type="text/ng-template" id="three">
      <div class="animation-width">
          <h3>This is the third frame</h3>
          <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.</p>

          <p>Vivamus fermentum semper porta. Nunc diam velit, adipiscing ut tristique vitae, sagittis vel odio. Maecenas convallis ullamcorper ultricies. Curabitur ornare, ligula semper consectetur sagittis, nisi diam iaculis velit, id fringilla sem nunc vel mi. Nam dictum, odio nec pretium volutpat, arcu ante placerat erat, non tristique elit urna et turpis. Quisque mi metus, ornare sit amet fermentum et, tincidunt et orci. Fusce eget orci a orci congue vestibulum. Ut dolor diam, elementum et vestibulum eu, porttitor vel elit. Curabitur venenatis pulvinar tellus gravida ornare. Sed et erat faucibus nunc euismod ultricies ut id justo. Nullam cursus suscipit nisi, et ultrices justo sodales nec. Fusce venenatis facilisis lectus ac semper. Aliquam at massa ipsum. Quisque bibendum purus convallis nulla ultrices ultricies. Nullam aliquam, mi eu aliquam tincidunt, purus velit laoreet tortor, viverra pretium nisi quam vitae mi. Fusce vel volutpat elit. Nam sagittis nisi dui.</p>

          <p>Suspendisse lectus leo, consectetur in tempor sit amet, placerat quis neque. Etiam luctus porttitor lorem, sed suscipit est rutrum non. Curabitur lobortis nisl a enim congue semper. Aenean commodo ultrices imperdiet. Vestibulum ut justo vel sapien venenatis tincidunt. Phasellus eget dolor sit amet ipsum dapibus condimentum vitae quis lectus. Aliquam ut massa in turpis dapibus convallis. Praesent elit lacus, vestibulum at malesuada et, ornare et est. Ut augue nunc, sodales ut euismod non, adipiscing vitae orci. Mauris ut placerat justo. Mauris in ultricies enim. Quisque nec est eleifend nulla ultrices egestas quis ut quam. Donec sollicitudin lectus a mauris pulvinar id aliquam urna cursus. Cras quis ligula sem, vel elementum mi. Phasellus non ullamcorper urna.</p>

          <p>Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In euismod ultrices facilisis. Vestibulum porta sapien adipiscing augue congue id pretium lectus molestie. Proin quis dictum nisl. Morbi id quam sapien, sed vestibulum sem. Duis elementum rutrum mauris sed convallis. Proin vestibulum magna mi. Aenean tristique hendrerit magna, ac facilisis nulla hendrerit ut. Sed non tortor sodales quam auctor elementum. Donec hendrerit nunc eget elit pharetra pulvinar. Suspendisse id tempus tortor. Aenean luctus, elit commodo laoreet commodo, justo nisi consequat massa, sed vulputate quam urna quis eros. Donec vel.</p>
          <a class="btn-back" ng-click="$parent.myExp='two'">Back</a>
      </div><!-- /.animation-width -->
    </script><!--/#two -->

  </div><!-- /.my-slide-container -->
  </div><!-- ng-init="myExp='one'" -->

You need to make sure that the buttons are in the DOM when the jQuery call is made. 进行jQuery调用时,您需要确保按钮在DOM中。

I got it to work in this fiddle . 我得到了它在这方面的工作小提琴 I added your scrollToTop function to the $rootScope and then call that in ng-click. 我将您的scrollToTop函数添加到$ rootScope中,然后在ng-click中调用它。 That's probably not the correct place to put it, but it works... 那可能不是放置它的正确位置,但是它可以工作...

angular.module('myApp', [])
.run(function ($rootScope) {
    $rootScope.scrollToTop = function () {
        $('html, body').animate({
            //scrollTop: $("header").offset().top
            scrollTop: 0
        }, 500);
    }
});

And the HTML 和HTML

<button class="btn-lg btn-primary scrollTop" ng-click="$parent.myExp='three'; scrollToTop()">Next2</button>

I did need to change the scrollTop input to animate to be 0 because there is no "header" in the html. 我确实需要将scrollTop输入更改为animate为0,因为html中没有“ header”。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM