Search code examples
javascriptangularjsng-options

AngularJS display multiple values in select menu?


I have a select menu using Angular 1.5.11:

 <select ng-model="abc.user.state" name="state" ng-options="option.code as option.name for option in abc.brStateSelect.options | orderBy: 'name' track by option.code"
    class="form-control" required></select>

which uses json such as

[{ "id": 11, "name": "Rondônia", "code": "RO" }, { "id": 12, "name": "Acre", "code": "AC" }]

And the menu correctly displays the "name" props. However I want to display TWO props: "name" and "code" such as Acre - AC as the menu items.

How can I modify my ng-options to display more than one field as a label?


Solution

  • You can do this,

    <select ng-model="abc.user.state" name="state" ng-options="option.name  as option.name + '-' + option.code  for option in datas | orderBy: 'name' track by option.code"  class="form-control" required></select>
    

    DEMO

    var app = angular.module("myApp", []);
    app.controller("myCtrl", function($scope) {
    $scope.datas =
      [{ "id": 11, "name": "Rondônia", "code": "RO" }, { "id": 12, "name": "Acre", "code": "AC" }];
    });
    <!DOCTYPE html>
    <html>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
    <body ng-app="myApp" ng-controller="myCtrl">
    	<select ng-model="abc.user.state" name="state" ng-options="option.name  as option.name + '-' + option.code  for option in datas | orderBy: 'name' track by option.code"
        class="form-control" required></select>
    </body>
    </html>