Search code examples
angularjs-ng-options

ng-options with track by using angular 1.3.0


I am trying to use the 'track by' expression to track my selections by value, in an array of objects but, I'm unable to get it to work.


JS

   var app = angular.module('cwsystem', []).controller('RegistrationCtrl', ['$scope', function($scope){
        $scope.roles = [
            {value: '110', position: 'Security Chief'},
            {value: '111', position: 'Security Officer'}
        ];
   }]);

HTML

 <select name="userStatus" ng-model="user.userStatus" ng-options=" role.value as role.position for role in roles track by role.position" class="form-control input-sm" required>
    <option value="">--Select Status--</option>
 </select>

I want the browser to render the results like this:

 <select name="userStatus" ng-model="user.userStatus" ng-options=" role.value as role.position for role in roles track by role.position" class="form-control input-sm" required>
    <option value="">--Select Status--</option>
    <option value="110">Security Chief</option>
    <option value="111">Security Officer</option>
 </select>

Can I get some assistance please on this problem?


Solution

  • ng-options does not accept "role.value as role.position for role in roles track by role.position" expression.

    <select name="userStatus" ng-model="user.userStatus" ng-options=" role.value as role.position for role in roles" class="form-control input-sm" required>
        <option value="">--Select Status--</option>
    </select>
    

    if you use above expression in ng-option you will get selected value in ng-model variable