[英]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.