<!DOCTYPE html>
<html>

<head>
    <script data-require="angular.js@1.2.4" data-semver="1.2.4" src="http://code.angularjs.org/1.2.3/angular.js"></script>
    <link data-require="font-awesome@4.0.3" data-semver="4.0.3" rel="stylesheet" href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" />
    <script src="script.js"></script>
</head>

<body ng-app="myApp" ng-controller="MainCtrl">
    <div>
        Click on a gear to start or stop it from spinning.
        <br>
        <pre>{{colors}}</pre>
        <input type="button" value="Move It" ng-click="moveIt()"></input>
        <label for="textSize>">Size:</label>
        <input type="text" ng-model="textSize">px
    </div>
    <div>
        <gear ng-repeat="color in colors track by $index"></gear>
    </div>
</body>

</html>
// Code goes here

var myApp = angular.module('myApp', []);

//myApp.factory('myService', function() {});

myApp.controller('MainCtrl', function($scope) {
    $scope.colors = ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet'];
    $scope.moveIt = function() {
        $scope.colors.unshift( $scope.colors.pop() );
    };
    $scope.textSize = 120;
});

myApp.directive('gear', function() {
    return {
        restrict: 'E',
        controller: function($scope) {
            $scope.spinning = true;
            $scope.stopOrStart = function() {
                $scope.spinning = !$scope.spinning;
            };
        },
        templateUrl: 'gear-widget.html'
    };
});
<i class="fa fa-gear" ng-style="{'color': color,
                                 'font-size': textSize + 'px'}"
                      ng-class="{'fa-spin': spinning}"
                                        ng-click="stopOrStart()"></i>