ホームページ  >  記事  >  ウェブフロントエンド  >  AngularJS_AngularJSをベースにページが最後までスクロールした際に自動でデータを読み込む機能を実装

AngularJS_AngularJSをベースにページが最後までスクロールした際に自動でデータを読み込む機能を実装

WBOY
WBOYオリジナル
2016-05-16 15:36:321523ブラウズ

この機能を実装するには、サードパーティ コントロールhttps://github.com/sroze/ngInfiniteScrollを使用できます。手順は次のとおりです。

1. ng-infinite-scroll.js プログラムをダウンロードします http://sroze.github.io/ngInfiniteScroll/ 現在のバージョンは 1.0.0

2. jQuery2.0 以降を使用している場合は、ng-infinite-scroll.js プログラムを変更し、すべての $window.xxx を $(window) .xxx に変更する必要があります。 elem.xxx が $(elem).xxx に変更されました

3. HTML にスクリプト を導入します。

b30fad698bf785b78893da36cc4872f72cacc6d41bbb37262a98f745aa00fbf0

86ae84ff18d651e1e3aa7ff8c065d1052cacc6d41bbb37262a98f745aa00fbf0
58da80a78921fb5d05a46970577c0d122cacc6d41bbb37262a98f745aa00fbf0

4. HTML サンプルコードは次のとおりです:

 <div ng-controller='PostListController'>
   <div infinite-scroll='demo.nextPage()' infinite-scroll-disabled='demo.busy' infinite-scroll-distance=''>
     <div ng-repeat='item in demo.items'>
       <p>
         <input type="hidden" value="{{item.PostId}}" />
         <label>{{item.WriterName}}</label>
         <label>{{item.WriterMail}}</label>
         <label>{{item.WreckerName}}</label>
         <label>{{item.StartDate}}</label>
         <label>{{item.Location}}</label>
         <label>{{item.Story}}</label>
       </p>
     </div>
     <div ng-show='demo.busy'>Loading data...</div>
   </div>
 </div>

5. PostListController.js のコードは次のとおりです:

 var ftitAppModule = angular.module('ftitApp', ['infinite-scroll']);
 ftitAppModule.controller('PostListController', 
   function ($scope, Demo) {
     $scope.demo = new Demo();
 });
 // 创建后台数据交互工厂
 ftitAppModule.factory('Demo', function ($http) {
   var Demo = function () {
     this.items = [];
     this.busy = false;
     this.after = '';
     this.page = ;
   };
   Demo.prototype.nextPage = function () {
     if (this.busy) return;
     this.busy = true;
     var url = "http://...:/api/post/nextpage&#63;id=" + this.page + "&callback=JSON_CALLBACK";
     $http.jsonp(url).success(function (data) {
       var items = data;
       for (var i = ; i < items.length; i++) {
         this.items.push(items[i]);
       }
       this.after = "t_" + this.items[this.items.length - ].id;
       this.busy = false;
       this.page += ;
     }.bind(this));
   };
   return Demo;
 });
ページを最後までドラッグした後にサーバーから自動的にデータを読み込む機能を実現します。

追記: AngularJS 読み込み実行処理

1. HTML ページの読み込み。これにより、ページに含まれるすべての JS (AngularJS を含む) の読み込みがトリガーされます

2. AngularJS を起動し、すべてのディレクティブを検索します

3. ng-app を見つけて、その指定されたモジュール (モジュール) を検索し、ng-app が配置されているコンポーネントにアタッチします。

4. AnguarJS はすべてのサブコンポーネントを走査し、命令とバインド コマンドを探します

5. ng-controller または ng-repeat が見つかるたびに、コンポーネントのコンテキストであるスコープが作成されます。スコープは、関数および変数に対する各 DOM コンポーネントのアクセス権を指定します。

6. AngularJS は変数にリスナーを追加し、各変数の現在の値を監視します。値が変更されると、AngularJS はページ上の表示を更新します。

7. AngularJS は、バックグラウンドで継続的にポーリングするのではなく、特定の特別なイベントがトリガーされたときにのみデータの更新をチェックするためのアルゴリズムを最適化しました。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。