gpt4 book ai didi

javascript - orderBy 带有下拉列表的嵌套排序正在对数据进行分组

转载 作者:行者123 更新时间:2023-11-27 23:22:25 24 4
gpt4 key购买 nike

鉴于下面的数据模型,我尝试按制造商名称和/或价格对产品进行排序。它的工作原理是升序和降序排序,但它是按制造商对排序进行分组,因此例如,当按价格排序时,我会期望以下结果:

<强> Please see jsFiddle here

预期产量(按价格)

  1. 苹果 Macbook - 1200.00

  2. 宏碁笔记本电脑 - 900.00

  3. 苹果 iPad - 420.00

  4. 宏碁鼠标 - 20.00

实际产量(按价格)

  1. 苹果 Macbook - 1200.00

  2. 苹果 iPad - 420.00

  3. 宏碁笔记本电脑 - 900.00

  4. 宏碁鼠标 - 20.00

这似乎是一个简单的问题,但我是 Angular 的新手,所以只是想弄清楚它。任何帮助都会很棒!

<select ng-model="sortBy">
<option value="" selected="selected">Sort Type</option>
<option value="+price">Price - high to low</option>
<option value="-price">Price - low to high</option>
<option value="-manufacturerName">Manufacturer A-Z</option>
<option value="+manufacturerName">Manufacturer Z-A</option>
</select>

<div ng-repeat="manufacturer in manufacturer.manufacturers">
<div ng-repeat="product in manufacturer.products | filter:filterByFeature | orderBy:sortBy">
// stuff
</div>
</div>

{
"manufacturers": [
{
"manufacturerId": 1,
"manufacturerName": "Apple",
"products": [
{
"name": "Macbook",
"price": 1200.00
},
{
"name": "Ipad",
"price": 420.00
}
]
},
{
"manufacturerId": 2,
"manufacturerName": "Acer",
"products": [
{
"name": "Laptop",
"price": 900.00
},
{
"name": "Mouse",
"price": 20.00
}
]
}
]
}

<强> Please see jsFiddle here

最佳答案

您没有对制造商进行排序。 manufacturer.manufacturers 周围的 ng-repeat 不会对制造商进行排序,因此它始终是相同的顺序,并且单个制造商的产品中的子数组将在不进行排序的情况下进行排序尊重他人。您可能想要重组数据,使其成为可以排序的单个产品列表。

$scope.products = _.flatten(manufacturers.map(function(m) {
return m.products.map(function(p) {
var o = angular.extend({}, p);
o.providerName = m.manufacturerName;
return o;
});
}));

应该可以做到(使用下划线作为示例)。

关于javascript - orderBy 带有下拉列表的嵌套排序正在对数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35277792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com