ホームページ > 記事 > ウェブフロントエンド > AngularJS_AngularJSをベースにページが最後までスクロールした際に自動でデータを読み込む機能を実装
この機能を実装するには、サードパーティ コントロール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?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 は、バックグラウンドで継続的にポーリングするのではなく、特定の特別なイベントがトリガーされたときにのみデータの更新をチェックするためのアルゴリズムを最適化しました。