To use tracking with filters, use track by .
Markup
ng-options="key as value for (key, value) in data.month | orderBy:'key' track by key"
Update
This orderBy will never work, because you have a literal array. You need to convert this array to a JSON object, which would be structured as [{id: 0, value: "M"}, {id: 1, value: "January"},......]
HTML
ng-options="item.id as item.value for items in data.month | orderBy:'id'"
Demo plunkr
Pankaj parkar
source share