gpt4 book ai didi

angularjs - angular js排序后比较数组值

转载 作者:行者123 更新时间:2023-12-02 03:31:21 25 4
gpt4 key购买 nike

这是一个从 Click Return wrong Index after Sorting 扩展而来的问题!

 > <tr ng-repeat="item in items | orderBy:'Store.storeName'">
<td><input class="toggle" type="checkbox" ng-model="item.Completed"></td>
<td>{{item.Name}}</td>
<td>{{item.Quantity}} Stk.</td>
<td>{{item.Price || 0 | number:2}} €</td>
<td>{{item.Quantity*item.Price|| 0 | number:2}} €</td>
<td>{{item.Store.storeName}}</td>
<td><a><img src="img/delete.png" ng-click="removeItem(item)">{{$index}}</a></td>

所以在他的问题中,他尝试在排序后删除数组中的项目,其中“$index”不会返回正确的索引,因此解决方案建议将“item”本身作为参数传回并使用“indexof” (项目)”功能。

我的问题是如果我想比较排序后的值怎么办?
由于 $index 不反射(reflect)新排序数组中的实际排序索引,我无法比较计算 sorted 数组中第一项和第二项之间的 item.Price 的值。

什么是最好的方法?

最佳答案

您可以使用自定义 $filter,如下所示:

.filter('prevExpression', function($parse){
return function(prevItemExpression){
if(!prevItemExpression || !this.$$prevSibling)
return undefined;
return $parse(prevItemExpression)(this.$$prevSibling);
}
})

例如这样的 Controller :

.controller('testController', function($scope){
$scope.items = [
{id:1, name:'a', price:12.5},
{id:2, name:'b', price:0.5},
{id:3, name:'c', price:1.5},
{id:4, name:'d', price:8},
{id:5, name:'e', price:100}
];

})

你可以这样做:

<table ng-app="testApp" ng-controller="testController">
<tr>
<td>Name</td>
<td>Price</td>
<td>Prev Item Price</td>
</tr>
<tr ng-repeat="item in items | orderBy:'price'">
<td>{{item.name}}</td>
<td>{{item.price}}</td>
<td>{{'item.price' | prevExpression }}</td>
</tr>
</table>

Example

关于angularjs - angular js排序后比较数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26552647/

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