簡體   English   中英

選擇帶有最小值的選項

[英]Select option with minimum value

我有JSON:

[{name:'Mary', phone:'555-9876', age:19, date:'2011-06-12T00:00:00.000Z'},
{name:'John', phone:'555-1212', age:10, date:'2011-06-11T00:00:00.000Z'},
{name:'Mike', phone:'555-4321', age:21, date:'2011-07-13T00:00:00.000Z'},
{name:'Adam', phone:'555-5678', age:35, date:'2011-05-14T00:00:00.000Z'},
{name:'Julie', phone:'555-8765', age:29, date:'2011-06-15T00:00:00.000Z'}]

我應該創建<select>並選擇年齡最小的名稱。 就我而言-約翰。

我的控制器:

function Projects ($scope, $http) {
    $scope.rootEntry = [];
    $http.get('/api/...').success(function(root) {
        $scope.rootEntry = root;
        $scope.selectedRoot = $scope.rootEntry[0].name;
    });
}

和HTML:

<select ng-options="root.age as root.name for root in rootEntry ng-model="selectedRoot">
</select>

我可以選擇第一項- $scope.selectedRoot = $scope.rootEntry[0].name;

如何選擇最低年齡?

在您的成功處理程序中,遍歷$scope.rootEntry來查找年齡最小的項目,並將該值分配給$scope.selectedRoot

有幾種方法可以做到這一點,您可以從$ filter和orderBy開始https://docs.angularjs.org/api/ng/filter/orderBy ,這應該為您提供一個列表,按年齡在ngRepeat或$ filterprovider上進行排序,然后只需抓住第一個元素。

在這里擺弄-http: //jsfiddle.net/devitate/LKeQz/

沒有任何測試 ,奇特的方式看起來像這樣- 但是不要相信這個代碼

var min = Math.min.apply(null,
   Object.keys($scope.rootEntry).map(function(e) {
        return $scope.rootEntry[e]['age'];
   })
);

或者,至少對於我來說,一種更容易理解的方法只是一個循環,它會發生類似的事情-

 var ages = [];
 angular.forEach( $scope.rootEntry , function(value, key) {
   ages.push(value.age);
 });
 return Math.min(ages);

但您可能應該跳過下划線js-

_.min($scope.rootEntry, function(e){ return e.age; });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM