Adding a custom field to Routes - clever solution or terrible hack?
I'm not sure if my solution is relevant to your problem, but I had a similar problem with keeping the correct page selected on page refresh as refresh was resetting defaults and home would be selected on what ever page you refreshed from.

This is how I solved it:

page controllers

app.controller('aboutCtrl', ['$rootScope', function($rootScope){
    $rootScope.$broadcast('pageSelected', "about");
}]);

app.controller('stuffCtrl', ['$rootScope', function($rootScope){
    $rootScope.$broadcast('pageSelected', "stuff");
}]);

app.controller('homeCtrl', ['$rootScope', function($rootScope){
    $rootScope.$broadcast('pageSelected', "home");
}]); 


When the page controller is initiated, it broadcasts pageSelected with the name of the page as the value (important to use $rootScope to avoid parent/child cases).

navigation menu controller

app.controller('headerCtrl', ['$scope', '$rootScope', function($scope, $rootScope){
    $scope.$on('pageSelected', function(e, val){
        $scope.selected = val;
    });
}]);


The menu controller is listening for the pageSelected broadcast and will set $scope.selected to the value received.

navigation menu html

&lt;a ui-sref="home"&gt;&lt;div ng-class="{selected: selected=='home'}"&gt;Home&lt;/div&gt;&lt;/a&gt;
&lt;a ui-sref="toDo"&gt;&lt;div ng-class="{selected: selected=='todo'}"&gt;To Do&lt;/div&gt;&lt;/a&gt;
&lt;a ui-sref="stuff"&gt;&lt;div ng-class="{selected: selected=='stuff'}"&gt;Stuff&lt;/div&gt;&lt;/a&gt;
&lt;a ui-sref="about"&gt;&lt;div ng-class="{selected: selected=='about'}"&gt;About&lt;/div&gt;&lt;/a&gt;


Finally, the menu will update which item has the selected class dynamically based on $scope.selected.

In your case, you could maybe have the page controllers that need the same menu item selected to broadcast the same value?

Although not necessary, I also recommend using ui-router.  It is state-based instead of URL-based; that's why I have ui-sref="home" ect.