我有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;
如何选择最低年龄?
答案 0 :(得分:1)
在您的成功处理程序中,遍历$scope.rootEntry
以查找年龄最小的项目,并将该值分配给$scope.selectedRoot
。
答案 1 :(得分:0)
有几种方法可以解决这个问题,你可以从$ 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; });