<!doctype html>
<html ng-app="plunker">
  <head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.5/angular.min.js"></script>
    
    <script src="script.js"></script>
    <link rel="stylesheet" href="main.css" />
  </head>
  <body>

<div>
  <ul menu ng-controller="Navigation">
    <li><a href="#">Category A</a>
        <ul>
            <li><a href="a1.html">a1</a></li>
            <li><a href="a2.html">a2</a></li>
        </ul>
    </li>
    <li><a href="#">Category B</a>
        <ul>
            <li><a href="b1.html">b1</a></li>
            <li><a href="b2.html">b2</a></li>
        </ul>
    </li>
    <li><a href="contact.html">contact</a></li>
  </ul>
  
  <input ng-model="currentPage" />
  <br>
  currentPage: {{currentPage}}
</div>


  </body>
</html>
var app = angular.module('plunker', []);
app.controller('Navigation', 
    function($scope) {}
  );

app.directive('menu',
    function(){
      return {
        link: function ($scope, $element) {
          var link, li;
          $scope.$watch('currentPage', function(page){
            activate(page);
          });
          
          function activate(page){
            angular.forEach($element.find('li'), function(elm){
              li = angular.element(elm);
              link = li.find('a');
              console.log(link.attr('href'));
              if(link.attr('href') === $scope.currentPage){
                li.addClass('active');
                var parent = li.parents('li');
                console.log('parent', parent);
                li.parents('li').addClass('active');
                return;
              }
              li.removeClass('active');
            });
          }
        }
      };
    }
  );
li.active > a {
    color: red;
}