AngularJS Example:

by lsiv568

HTML

<link rel="stylesheet" href="http://twitter.github.com/bootstrap/assets/css/bootstrap.css">
<!-- https://www.bitfinex.com/pages/api -->
<div ng-app="bitFinEx" ng-controller="TickerCtrl">
  <h1>Tickers</h1>
    <div ng-repeat="symbol in symbols">
        <h2>{{symbol.value | uppercase}}</h2>
        <table>
            <tr ng-repeat="(key, value) in symbol.tickerData">
                <td>{{key}}</td>
                <td>{{value}}</td>
            </tr>
        </table>
    </div>
    <!-- 
    GET /today/:symbol 
    https://api.bitfinex.com/v1/symbols
    -->
    <br/>
</div>

JavaScript

var bitFinEx = angular.module('bitFinEx', []);
bitFinEx.controller('TickerCtrl', function($scope, SymbolDataService, TickerDataService) {
    SymbolDataService.getSymbols().then(function(response) {
        console.log(response);
        var symbols = [];
        angular.forEach(response, function(value) {
            var curSymbol = {value: value, tickerData: {}};
            TickerDataService.getTickerData(value).then(function(response) {
                curSymbol.tickerData = response;
            });
            symbols.push(curSymbol);
        });
        $scope.symbols = symbols;
        $scope.ghab = 'asd';
    });
});

bitFinEx.factory('SymbolDataService', function($http, $q, $timeout) {
    
    var getSymbols = function() {
        var d = $q.defer();
        $timeout(function() {
            d.resolve(["btcusd","ltcusd","ltcbtc"]);
        }, 1000);
        return d.promise;
    }
    
    return {
        getSymbols: function() {
            return getSymbols();
        }
    }
});

bitFinEx.factory('TickerDataService', function($http, $q, $timeout) {
    var i = 1;
    var getData = function() {
        var data = {mid: '123', bid: '345', ask: '45.5'};
        var d = $q.defer();
        $timeout(function() {
            d.resolve(data);
        }, 1000);
        return d.promise;
    }
    
    return {
        getTickerData: function(symbol) {
            return getData()    
        }
    }

});