IONIC多條聊天記渲染完畢後滾動到底部解決方案

最近開發一個混合即時通訊項目,有這樣一個場景,當用戶已經有很多條聊天記錄後,再次進入後,需要顯示所有的記錄,然後自動滾動到底部。

滾動到底部實現起來比較簡單,$ionicScrollDelegate就可以實現,但是angular的ng-repeat渲染是需要一段時間的,也就是說們需要知道什麼時候ng-repeat纔會渲染完成,才能真正滾動到頁面底部。

研究了一下找到了一個解決方案:

爲了達到複用的目的,我們需要寫一個direcitve,上代碼:

'use strict';

// @ngInject
module.exports = function enterAction() {
  return {
      restrict: 'A',
      link: function (scope, element, attr) {
          if (scope.$last === true) {
              scope.$eval(attr.finishRender);
          }
      },
  };
};

上面的代碼中scope.$last就是用來判斷是否是最後一天記錄被渲染,實話講,angular爲開發想到的語法糖真得是很多。

判斷好最好一個後,需要通知一個事件,用到的就是$eval這個方法,其主要作用就是, 可計算某個字符串,並執行其中的的 JavaScript 代碼。

那麼如何使用呢:

<ion-list>
    <ion-item ng-repeat="msgItem in chat.messageList"    finish-render="finishRender()">

    </ion-item>
</ion-list>

之後,我麼在control中聲明一個finisheRender()的方法就會被調用了。

so easy!!!!!!

發佈了208 篇原創文章 · 獲贊 143 · 訪問量 79萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章