2015-04-22 91 views
0

我有一个使用经销商对象数组的选择。我可以显示经销商名称作为选项,但我也想显示距离。例如“经销商名称 - 12英里”。AngularJS - ngOptions

我的选择:

<select ng-show="dealers" ng-model="formData.dealer.dealerNumber" 
ng-options="dealer.dealerNumber as dealer.name for dealer in dealers"> 
</select> 

回答

1

doc

选择为标签的价值在阵列

标签:此表达式的结果将是<选项>元素的标签。该表达式很可能会引用值变量(例如,value.propertyName)。

angular.module('app', []) 
 
    .controller('ctrl', ["$scope", 
 
    function($scope) { 
 
     $scope.dealers = [{ 
 
      dealerNumber: 1, 
 
      name: 'd', 
 
      distance: '123' 
 
     }, { 
 
      dealerNumber: 2, 
 
      name: 'dd', 
 
      distance: '124' 
 
     }, { 
 
      dealerNumber: 3, 
 
      name: 'ddd', 
 
      distance: '125' 
 
     }, { 
 
      dealerNumber: 4, 
 
      name: 'dddd', 
 
      distance: '126' 
 
     }, { 
 
      dealerNumber: 5, 
 
      name: 'ddddd', 
 
      distance: '127' 
 
     }, { 
 
      dealerNumber: 6, 
 
      name: 'dddddd', 
 
      distance: '128' 
 
     } 
 

 

 
     ]; 
 

 
    } 
 
    ]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ctrl"> 
 
    <select ng-show="dealers" ng-model="dealerNumber" ng-options="dealer.dealerNumber as dealer.name+'-'+dealer.distance for dealer in dealers"> 
 
    </select> 
 
</div>

UPDATE:使用过滤器

angular.module('app', []) 
 
    .controller('ctrl', ["$scope", 
 
    function($scope) { 
 
     $scope.dealers = [{ 
 
      dealerNumber: 1, 
 
      name: 'd', 
 
      distance: '123.5' 
 
     }, { 
 
      dealerNumber: 2, 
 
      name: 'dd', 
 
      distance: '124.6' 
 
     }, { 
 
      dealerNumber: 3, 
 
      name: 'ddd', 
 
      distance: '125' 
 
     }, { 
 
      dealerNumber: 4, 
 
      name: 'dddd', 
 
      distance: '126' 
 
     }, { 
 
      dealerNumber: 5, 
 
      name: 'ddddd', 
 
      distance: '127' 
 
     }, { 
 
      dealerNumber: 6, 
 
      name: 'dddddd', 
 
      distance: '128' 
 
     } 
 

 

 
     ]; 
 

 
    } 
 
    ]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ctrl"> 
 
    <select ng-show="dealers" ng-model="dealerNumber" ng-options="dealer.dealerNumber as dealer.name+'-'+(dealer.distance|number:0) for dealer in dealers"> 
 
    </select> 
 
</div>

+0

感谢大家好,是有办法对距离的过滤器,使它是一个整体红棕色。像{{dealer.distance | number:0}} – user3562751

+0

@ user3562751是的,你可以使用过滤器,但括号,尝试看到更新的答案 – Grundy

1

你可以做的是:

<select ng-show="dealers" ng-model="formData.dealer.dealerNumber" 
           ng-options="dealer.dealerNumber as (dealer.name + ' - ' + dealer.distance) for dealer in dealers"> 
    </select>