If I bind an array to a SELECT tag using the following:
<select ng-model="selData" ng-options="$index as d.name for d in data">
<select ng-model="selData" ng-options="d as d.name for d in data">
$index is defined for ng-repeat, not select. I think this explains the
undefined. (So, no, this shouldn't work.)
Angular supports binding on the entire object. The documentation could be worded better to indicate this, but it does hint at it: "ngOptions ... should be used instead of ngRepeat when you want the select model to be bound to a non-string value."