Javascript AngularJS–;更改ng筛选器后如何更新jQuery scrollTop?

Javascript AngularJS–;更改ng筛选器后如何更新jQuery scrollTop?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我正在做一个项目,我使用ng repeat和ng filter的组合来浏览一系列内容。用户单击导航链接后,页面过滤器将更新,以便添加更多内容,视口将滚动到下一个定位点。下面是一个例子: 导航 <li class="nav"><a href="#first-section" id="first-link">First Section</a></li> <li class="nav"><a href="#second-section"

我正在做一个项目,我使用ng repeat和ng filter的组合来浏览一系列内容。用户单击导航链接后,页面过滤器将更新,以便添加更多内容,视口将滚动到下一个定位点。下面是一个例子:

导航

<li class="nav"><a href="#first-section" id="first-link">First Section</a></li>
<li class="nav"><a href="#second-section" id="second-link">Second Section</a></li>
<li class="nav"><a href="#third-section" id="third-link">Third Section</a></li>
请注意,第二个过滤器还包括第一个过滤器的内容(我希望用户能够向上滚动页面。对于页面上尚未出现的元素,风会立即跳到ng repeat元素(无滚动)。如果该元素已出现在页面上(例如,如果用户位于第三部分,并单击返回第一部分)滚动工作正常

问题:是我更新scrollTop的一种方法,以便在ng filter启动后重新计算页面上元素的位置吗


为什么不重复?该网站内容繁杂,我正在寻找一种能够以AJAX-y方式加载的东西,但也允许用户搜索内容(此处未显示第二个过滤器)。

不相关,但您是否阅读过:?您是否尝试过以角度的方式进行操作。不使用
$('something'))。单击
,但改用
ng-click
指令,或者更好的路由。@TheHippo–我使用的是ng-click=“Filter={type:'first-section'}”但后来我决定把东西移到控制器中,因为我认为这样会更干净。我真的应该设置路由,但我不知道如何设置过滤器状态而不是视图。感谢链接!浏览他们网站上的教程。我知道学习曲线非常陡峭,但一旦你了解了angu的概念lar可以解决99%的问题,而jQuery看起来比您上面发布的要干净1000倍。(无意冒犯;-)这是一个很棒的教程!我每次都会学到新东西——这部分是受到angular phonecat的启发。
$('li.nav').click(function (event) {
    var navId = event.target.id; //Get ID of clicked link
    switch (navId) {
        case 'first-link':
            $scope.Filter = { type: 'first-section' }; //Set ng-filter "Filter" to only show content from first section.
            $('html, body').animate({
                scrollTop: $("#first-section").offset().top //Scroll to first section.
            }, 2000);
            break;
        case 'second-link': //Second verse, same as the first.
            $scope.Filter = { type: 'second-section' }; //The 2nd section also includes section 1, so that a user can scroll back up.
            $('html, body').animate({
                scrollTop: $("#Evolution").offset().top
            }, 2000);
            break;
    };
});