Onsen UI:使用ons-list自动滚动

时间:2015-09-03 08:14:24

标签: onsen-ui

我想以WhatsApp风格编程聊天。 最新消息将在下面显示,并且新消息将自动向下滚动。 任何人都可以帮助我如何通过ons-list实现自动滚动?

<ons-template id="chat.html">
    <ons-page ng-controller="ChatController">
        <ons-toolbar>
            <div class="left"><ons-back-button>Back</ons-back-button></div>
            <div class="center">Chat</div>
        </ons-toolbar>

        <ons-list style="margin-top: 10px" scroll-glue>
            <ons-list-item class="item" ng-repeat="msg in messages">
                <header>
                    <span class="item-title">{{msg.user}}</span>
                </header>
                <p class="item-desc">{{msg.msg}}</p>
            </ons-list-item>
        </ons-list>
    </ons-page>
</ons-template>

1 个答案:

答案 0 :(得分:6)

我还没有使用WhatsApp,但这可能有所帮助。在ons-page中,您可以使用.page__content&#39; scrollTop属性进行自动滚动。如下。它使用jQuery进行动画制作。

&#13;
&#13;
ons.bootstrap()
.controller('ChatController', function($scope, $timeout){
  $scope.messages = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];
  $timeout(function(){
    $('.page__content').animate({scrollTop: $('.ons-list-inner').height()}, 2000)
    .animate({scrollTop: 0}, 2000);
  });
});
&#13;
<link href="https://cdn.rawgit.com/OnsenUI/OnsenUI/1.3.8/build/css/onsen-css-components.css" rel="stylesheet"/>
<link href="https://cdn.rawgit.com/OnsenUI/OnsenUI/1.3.8/build/css/onsenui.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://cdn.rawgit.com/OnsenUI/OnsenUI/1.3.8/build/js/angular/angular.min.js"></script>
<script src="https://cdn.rawgit.com/OnsenUI/OnsenUI/1.3.8/build/js/onsenui.min.js"></script>

<ons-navigator page="chat.html"></ons-navigator>

<ons-template id="chat.html">
    <ons-page ng-controller="ChatController">
        <ons-toolbar>
            <div class="left"><ons-back-button>Back</ons-back-button></div>
            <div class="center">Chat</div>
        </ons-toolbar>

        <ons-list style="margin-top: 10px" scroll-glue>
            <ons-list-item class="item" ng-repeat="msg in messages">
                <header>
                    <span class="item-title">{{msg.user}}</span>
                </header>
                <p class="item-desc">{{msg.msg}}</p>
            </ons-list-item>
        </ons-list>
    </ons-page>
</ons-template>
&#13;
&#13;
&#13;