Search code examples
angularjsng-options

Angular ngOptions track by object keys


I would like to create a select element with ngOptions – so far so good:

<select ng-options="currency for (code, currency) in currencies track by code"
        ng-model="something.currency"></select>

Now I want to track the options by the object key (so the value of the ng-model should be the key and not the value of the object). Is this possible in some simple way and how?


Solution

  • Is it what you're looking for ?

    var myApp = angular.module('myApp',[]);
    
    myApp.controller('GreetingController', ['$scope', function($scope) {
      $scope.currencies_old = [
        {code: "USD", curr: "$"},
        {code: "IND", curr: "INR"}
      ];
      $scope.currencies = {"USD": "USDollars", "EUR": "Euro"};
    }]);
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    <div ng-app="myApp" ng-controller="GreetingController">
    <select ng-model="item" ng-options="key as value for (key , value) in currencies"></select>
    Code: {{item}}
      
    <br/> <br/> 
    <select ng-options="item as item.curr for item in currencies_old track by item.code" ng-model="item_old"></select>
    Code: {{item_old.code}}
    </div>