File tree Expand file tree Collapse file tree 2 files changed +107
-0
lines changed Expand file tree Collapse file tree 2 files changed +107
-0
lines changed Original file line number Diff line number Diff line change 1+ <!doctype html>
2+ < html >
3+
4+ < head >
5+ < meta charset ="utf-8 ">
6+ < title > Remote server emulation</ title >
7+ < script src ="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.js "> </ script >
8+ < script src ="../../dist/ui-scroll.js "> </ script >
9+ < script src ="remote.js "> </ script >
10+ < link rel ="stylesheet " href ="../css/style.css " type ="text/css " />
11+ </ head >
12+
13+ < body ng-controller ="mainController " ng-app ="application ">
14+ < div class ="cont cont-global ">
15+ < a class ="back " href ="../index.html "> browse other examples</ a >
16+ < h1 class ="page-header page-header-exapmle "> Remote server emulation</ h1 >
17+ < div class ="description ">
18+ This demo implements Remote server emulation factory, so the datasource get method looks like
19+ < div class ="code ">
20+ < pre >
21+ datasource.get = function(index, count, success) {
22+ Server.request(index, count).then(success);
23+ };</ pre >
24+ </ div >
25+ </ div >
26+ < div class ="viewport " ui-scroll-viewport >
27+ < div class ="item " ui-scroll ="item in datasource " start-index ="firstIndex ">
28+ {{item.content}}
29+ </ div >
30+ </ div >
31+ </ div >
32+ </ body >
33+
34+ </ html >
Original file line number Diff line number Diff line change 1+ angular . module ( 'application' , [ 'ui.scroll' ] )
2+
3+ . factory ( 'Server' , function ( $timeout , $q ) {
4+ return {
5+
6+ default : {
7+ first : 0 ,
8+ max : 99 ,
9+ delay : 100
10+ } ,
11+
12+ data : [ ] ,
13+
14+ init : function ( settings = { } ) {
15+ this . first = settings . hasOwnProperty ( 'first' ) ? settings . first : this . default . first ;
16+ this . max = settings . hasOwnProperty ( 'max' ) ? settings . max : this . default . max ;
17+ this . delay = settings . hasOwnProperty ( 'delay' ) ? settings . delay : this . default . delay ;
18+ for ( var i = this . first ; i <= this . max ; i ++ ) {
19+ this . data [ i ] = {
20+ index : i ,
21+ content : 'Item #' + i
22+ } ;
23+ }
24+ } ,
25+
26+ getFirst : function ( ) {
27+ return this . first ;
28+ } ,
29+
30+ request : function ( index , count ) {
31+ var self = this ;
32+ var deferred = $q . defer ( ) ;
33+
34+ var start = index ;
35+ var end = index + count - 1 ;
36+
37+ $timeout ( function ( ) {
38+ var item , result = [ ] ;
39+ if ( start <= end ) {
40+ for ( var i = start ; i <= end ; i ++ ) {
41+ if ( item = self . data [ i ] ) {
42+ result . push ( item ) ;
43+ }
44+ }
45+ }
46+ deferred . resolve ( result ) ;
47+ } , self . delay ) ;
48+
49+ return deferred . promise ;
50+ }
51+ } ;
52+ } )
53+
54+ . controller ( 'mainController' , function ( $scope , Server ) {
55+
56+ $scope . firstIndex = 1 ;
57+
58+ Server . init ( {
59+ first : $scope . firstIndex ,
60+ max : 100 ,
61+ delay : 40
62+ } ) ;
63+
64+ $scope . datasource = {
65+ get : function ( index , count , success ) {
66+ console . log ( 'requested index = ' + index + ', count = ' + count ) ;
67+ Server . request ( index , count ) . then ( function ( result ) {
68+ console . log ( 'resolved ' + result . length + ' items' ) ;
69+ success ( result ) ;
70+ } ) ;
71+ }
72+ } ;
73+ } ) ;
You can’t perform that action at this time.
0 commit comments