Angular: Empty Fiddle

http://angularjs.org/

HTML

<script src="http://code.angularjs.org/angular-1.0.1.js"></script>
<div ng-controller="MainController">
    <ul>
        <li ng-repeat="text in texts">{{text.data}}</li>
    </ul>
    <button ng-click="buttonClick()">Load a new delayed text</button>
    <div class="loading-widget">Loading...</div>
    <div>Pending requests: {{count()}}</div>
</div>

JavaScript

angular.module('myApp', [
    'myApp.services',
    'myApp.directives',
    'myApp.controllers'])
    .config(function (
$httpProvider,
requestNotificationProvider) {
    $httpProvider.defaults.transformRequest.push(function (data) {
        requestNotificationProvider.fireRequestStarted(data);
        return data;
    });

    $httpProvider.defaults.transformResponse.push(function (data) {
        requestNotificationProvider.fireRequestEnded(data);
        return data;
    });
});

angular.module('myApp.controllers', []).controller("MainController", function ($scope, $http, requestNotification) {
    $scope.texts = [];
    $scope.count = requestNotification.getRequestCount;
    $scope.buttonClick = function () {
        $http.get("http://slowapi.com/delay/1.0").then(function (response) {
            $scope.texts.push(response);
        }, function (response) {
            var d = new Date();
            $scope.texts.push({
                data: "Request failed!"
            });
        });
    };
});

angular.module('myApp.services', []).provider(
    'requestNotification', function () {
    // This is where we keep subscribed listeners
    var onRequestStartedListeners = [];
    var onRequestEndedListeners = [];

    // This is a utility to easily increment the request count
    var count = 0;
    var requestCounter = {
        increment: function () {
            count++;
        },
        decrement: function () {
            if (count > 0) count--;
        },
        getCount: function () {
            return count;
        }
    };
    // Subscribe to be notified when request starts
    this.subscribeOnRequestStarted = function (listener) {
        onRequestStartedListeners.push(listener);
    };

    // Tell the provider, that the request has started.
    this.fireRequestStarted = function (request) {
        // Increment the request count
        requestCounter.increment();
        //run each subscribed listener
       ...