Your plunker had some errors in the order of your dependancies (ie: jquery after angular, etc. There is an error message in the dev console). When using angular and jquery, you have to include jquery first.
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script src="http://code.angularjs.org/1.2.0-rc.3/angular.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<script src="//cdn.jsdelivr.net/underscorejs/1.5.1/underscore-min.js"></script>
Here is your demo with the fixes: http://plnkr.co/edit/92zvkjP1cx1wBlGqwB4D?p=preview
You do not need to order your data in the controller if you are using the orderBy
filter.
html
<div ng-repeat="(key,menu) in menus">
<h1>{{typeIds[key]}}</h1>
<select ng-model="selectedlocation"
ng-options="item.id as item.name for item in menu | orderBy:'name'">
</select>
</div>
js
function menuController($scope, $http) {
// probably not the best way to do this
$scope.typeIds = {3: "Buildings", 6: "Parking (Fac/Staff)", 7: "Parking (Public)", 8: "Parking (Student)", 11: "Landmarks"};
$http.get('locations.json').then(function(res) {
$scope.locations = res.data;
$scope.menus = _($scope.locations).groupBy('type_id');
/*
// This is not needed anymore
//Convert to array so it sorts correctly on the view side.
$scope.orderedMenus = [];
_($scope.menus).each(function(data, key) {
$scope.orderedMenus.push({"key" : key, "data" : data})
});
*/
});
}