(function() {
  function isDiv5(num) {
    return !(num % 5);
  }

  function isDiv3(num) {
    return !(num % 3);
  }

  angular.module('fizz-buzz-example', []).

  controller('CountsCtrl', function($scope) {
    $scope.counts = {
      fizzBuzz: 0,
      fizz: 0,
      buzz: 0
    }
  }).

  directive('fizzBuzz', function() {
    return {
      restrict: 'A',
      link: function(scope, el) {
        scope.counts.fizzBuzz += 1;
        el.html('FizzBuzz!!');
      }
    }
  }).

  directive('fizz', function() {
    return {
      restrict: 'A',
      link: function(scope, el) {
        scope.counts.fizz += 1;
        el.html('Fizz!!');
      }
    }
  }).

  directive('buzz', function() {
    return {
      restrict: 'A',
      link: function(scope, el) {
        scope.counts.buzz += 1;
        el.html('Buzz!!');
      }
    }
  }).

  directive('fizzBuzzer', function() {
    return {
      restrict: 'A',
      compile: function(el) {
        el.children().each(function(i, child) {
          var num = parseInt(child.innerHTML, 10);

          if (isDiv3(num) && isDiv5(num)) child.setAttribute('fizz-buzz', '');
          else if (isDiv3(num)) child.setAttribute('fizz', '');
          else if (isDiv5(num)) child.setAttribute('buzz', '');
        });
      }
    }
  });

}());
<!DOCTYPE html>
<html ng-app="fizz-buzz-example">

  <head>
    <link data-require="foundation@*" data-semver="5.0.0" rel="stylesheet" href="//cdn.jsdelivr.net/foundation/5.0.0/css/normalize.css" />
    <link data-require="foundation@*" data-semver="5.0.0" rel="stylesheet" href="//cdn.jsdelivr.net/foundation/5.0.0/css/foundation.min.css" />
    <script data-require="jquery@*" data-semver="2.0.3" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
    <script data-require="angular.js@*" data-semver="1.2.8" src="http://code.angularjs.org/1.2.8/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script type="text/javascript" src="app.js"></script>
  </head>

  <body ng-controller="CountsCtrl">
    <h1 class='counts'>
      <ul class='small-block-grid-3'>
        <li>Fizzing: {{counts.fizz}}</li>
        <li>Buzzing: {{counts.buzz}}</li>
        <li>FizzBuzzing: {{counts.fizzBuzz}}</li>
      </ul>
    </h1>
    
    <ul fizz-buzzer>
      <li>1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
      <li>5</li>
      <li>6</li>
      <li>7</li>
      <li>8</li>
      <li>9</li>
      <li>10</li>
      <li>11</li>
      <li>12</li>
      <li>13</li>
      <li>14</li>
      <li>15</li>
    </ul>
  </body>

</html>
h1.counts{
  background-color: black;
  color: white;
  margin-top: 0;
}

h1.counts li {
  padding: 5px 15px;
}

ul[fizz-buzzer] {
  list-style: none;
}