当前位置: 首页 > 面试题库 >

如何在AngularJS中保留ng-repeat的滚动位置?

马权
2023-03-14
问题内容

**DEMO**

使用呈现对象列表ng-repeat。假设此列表很长,并且用户正在滚动到底部以查看一些对象。

当用户观察对象时,新项目将添加到列表的顶部。这导致被观察对象改变其位置,即,用户在被观察对象的同一位置突然看到其他东西。

添加新项目后,如何将观察到的对象保持在同一位置?

**PLAYGROUND HERE**


问题答案:

通过使用的scrollTop属性,它可能非常优雅地解决了div。我使用了两个指令-
一个处理包装器元素的滚动位置,另一个处理新元素。如果有什么不清楚的地方请给我喊。

演示

JS:

.directive("keepScroll", function(){

  return {

    controller : function($scope){
      var element = null;

      this.setElement = function(el){
        element = el;
      }

      this.addItem = function(item){
        console.log("Adding item", item, item.clientHeight);
        element.scrollTop = (element.scrollTop+item.clientHeight+1);
       //1px for margin from your css (surely it would be possible
       // to make it more generic, rather then hard-coding the value)
      };

    },

    link : function(scope,el,attr, ctrl) {

     ctrl.setElement(el[0]);

    }

  };

})

.directive("scrollItem", function(){

  return{
    require : "^keepScroll",
    link : function(scope, el, att, scrCtrl){
      scrCtrl.addItem(el[0]);
    }
  }
})

HTML:

<div class="wrapper" keep-scroll>
  <div class="item" scroll-item ng-repeat="item in items  | orderBy: '-id'">
    {{ item.name }}
   </div>
</div>


 类似资料:
  • 问题内容: 示例应用程序: http //angular.github.com/angular- phonecat/step-11/app/#/phones 如果您选择最后一个手机“ Motorola charm”,它将为您显示手机的详细信息。当您在浏览器上浏览时,它将重新加载数据,并且滚动条位于顶部。 导航返回时,自动滚动到剩余位置的最佳方法是什么?而且,为什么角度重新加载数据? 我的计算机上有

  • 问题内容: 我想问你是否可以帮我这个忙。 我在这里用我的问题创建了一个jsfiddle 。我需要使用ng-model =“ my _ {{$ index}}”方式在ng-repeater中动态生成一些带有ng-model的输入。 在jsfiddle中,您可以看到一切正常,直到我尝试动态生成它为止。 HTML将是: 还有javascript … 你能给我个主意吗? 非常感谢。 问题答案: 它能解决您

  • 问题内容: 我正在MVC中从事一个项目,并且对此有所了解。有一些成长的烦恼,但一旦您找出来,那还不错。在WebForms世界中,真正简单的一件事是保持页面上的滚动位置。您所要做的只是将MaintenanceScrollPositionOnPostback属性设置为true。但是,在MVC中,我不使用回发,因此这对我不起作用。处理此问题的标准方法是什么? 编辑: Ajax是可以接受的,但我也想知道如

  • 问题内容: 我有一个列表,可以使用ng- repeat进行迭代:用户可以使用上箭头和下箭头图标与列表项进行交互,单击它们后,我只需更改“列表”中元素的顺序”,这就是角度建议更改模型并自动将更改反映在视图中的原因。 moveUp中的逻辑:- 上面的代码完全可以正常工作,向下移动项目的逻辑与此类似。但是我要解决的问题是如何放置动画?我知道angular会自行处理绑定视图和模型的问题,但是当按下向下箭头

  • 问题内容: 嗨,我有一个简单的ng-repeat-start和end用例,并且工作正常,当我想添加一个内部ng-repeat时出现了问题。这是我的代码 内部ng-repeat到td元素中不起作用,在检查html源代码时看到ngRepeat注​​释,但未创建td元素。 我的丑陋的解决方法(假设我知道该向量的大小)是: 问题答案: 从那时起,我不确定是否使用角度1.1.6,并且在1.1.5或1.0.7

  • 问题内容: 我知道我们可以轻松地对json对象或数组使用 ng-repeat ,例如: 但是如何将ng-repeat用于字典,例如: 我想在用户字典中使用它: 可能吗?。如果是,我该如何在AngularJs中做到这一点? 我的问题的示例:在C#中,我们定义如下字典: 是否有内置函数可以像c#中那样从字典返回值? 问题答案: 您可以使用 请参阅ngRepeat文档。示例:http://jsfiddl