AngularJS指令 - 将滚动条设置在正确的位置

时间:2016-08-14 16:05:02

标签: javascript angularjs

我在其他主题中发布了这个指令。 我将实现的是,用户向上滚动并且后续数据从后端重新加载(在底部的指令中模拟)。 我现在的问题是在重新加载数据并添加到eisting数组之后,如何处理滚动条 - 如何将滚动条设置到它应该的位置(新加载的数据开始的位置) 是否存在这样做的可能性或概念。

(function() {
'use strict';

angular
    .module('myProject.common')
    .directive('asScrollTop', asScrollTop);

function asScrollTop() {
    var directive = {
        restrict: 'A',
        scope: { chatMessagesOfUser: '=' },
        link: link
    };
    return directive;

    ////////////

    function link(scope, element, attr) {
        console.log(element);
        element.on('scroll', function() {
          if(element[0].scrollTop <= 0) {

              for(var i = 0; i < 10; i++) {
                  var newChatMessage = {};
                  newChatMessage.color = '#00ff00';
                  newChatMessage.confirmation = false;
                  newChatMessage.id = '57b05e24ce861d23bec293df';
                  newChatMessage.links = null;
                  newChatMessage.messageBody = 'das ist die neue message';
                  newChatMessage.messageUserConnectionId = '57b05e24ce861d23bec293e0';
                  newChatMessage.name = 'Mag. Testname testname';
                  newChatMessage.read = true;
                  newChatMessage.time = '13.08.2016 11:23';
                  newChatMessage.userCreatedMessageId = '"5589929b887dc1fdb501cdba"';

                  scope.chatMessagesOfUser.splice(0, 0, newChatMessage);
              }
              scope.$apply();
          }
        });
      }
}

})();

1 个答案:

答案 0 :(得分:0)

window.scrollTo是用于将页面滚动到某个位置的javascript函数。 From MDN

  

滚动到文档中的一组特定坐标。

  

实施例

window.scrollTo( 0, 1000 );

您可以使用此功能滚动页面,但前提是您知道新数据的Y位置。

也许您应该考虑在数据中插入锚标记,以用作scrollTo的参考点。