var app = angular.module('PinApp', ['ngAnimate', 'ngSanitize', 'ngResource', 'chieffancypants.loadingBar', 'infinite-scroll']); app.config(function($interpolateProvider, $httpProvider, cfpLoadingBarProvider) { $interpolateProvider.startSymbol('{$'); $interpolateProvider.endSymbol('$}'); cfpLoadingBarProvider.includeSpinner = false; }); app.factory('Pin', function($http, cfpLoadingBar){ var Pin = function() { this.items = []; this.busy = false; this.url = "/api/?limit=2&offset=0"; } Pin.prototype.more = function() { if (this.busy) return; if (this.url) { this.busy = true; cfpLoadingBar.start(); $http.get(this.url).success(function(data) { var items = data.results; for (var i = 0; i < items.length; i++) { this.items.push(items[i]); } this.url = data.next; this.busy = false; cfpLoadingBar.complete(); }.bind(this)); } }; return Pin; }) app.controller('PinCtrl', function($scope, Pin){ $scope.pins = new Pin(); $scope.pins.more(); });