I want to get/set the selected index + offset of a dropdown on the scope.
So when I select the option called "Third " the $scope.selectedIndex
value should be 3. But it's obj3
.
Here's what I've come up with so far. I was hoping that track by
would fix it, but it didnt :(
Controller
$scope.foos = [obj1, obj2, obj3]
View
<select data-ng-model="selectedIndex"
data-ng-options="foo.name for foo in foos track by foos.indexOf(foo) + 1">
<option value=""></option>
</select>
Generated view (the generated value is as expected)
<select data-ng-model="selectedIndex" data-ng-options="foo.name for foo in foos track by foos.indexOf(foo) + 1">
<option value="" class=""></option>
<option value="1" label="First">First</option>
<option value="2" label="Second">Second</option>
<option value="3" label="Third">Third</option>
</select>
I can't use the array trick
ng-options="idx as choice for (idx, choice) in choices"
Because idx needs to be offset by +1
Use the value as name syntax:
data-ng-options="foos.indexOf(foo) + 1 as foo.name for foo in foos"