实施多重排序功能;需要切换包含排序字段名和排序顺序的数组;
实施例
单击按名称排序:
[{"sortKey":"name","sortValue":"desc"}]
再次点击按名称排序:
[{"sortKey":"name","sortValue":"asc"}]
点击按年龄排序:
[{"sortKey":"name","sortValue":"asc"},{"sortKey":"age","sortValue":"desc"} ]
再次点击按名称排序:
[{"sortKey":"name","sortValue":"desc"},{"sortKey":"age","sortValue":"desc"} ]
if (checkIfObjectExists($scope.sortList, sortingObject)) {
if (!$scope.sortList.hasOwnProperty(sortingObject.sortType)) {
console.log($scope.sortList);
// replace the value for the key
}
} else {
$scope.sortList.push(sortingObject);
}
答案 0 :(得分:1)
我在你的实现中改变了一些东西。问题是你在检查整个对象是否不相同然后推入数组。但是如果sorKey
与sortValue
相同,那么您需要的是什么。
将您的功能checkIfObjectExists
更改为updateArray
。
function updateArray(array, newObject) {
var i = 0;
for (i = 0; i < array.length; i++) {
var object = array[i];
if (object.sortKey == newObject.sortKey) {
object.sortValue= (object.sortValue==='asc')?'desc':'asc';
return;
}
}
array.push(newObject);
}
在打电话的时候,我会在$scope.clickMe
中这样打电话。
updateArray($scope.sortList, sortingObject);