Я пытаюсь использовать пользовательскую функцию orderBy. Первоначально я хочу, чтобы данные отображались в том порядке, в котором они были добавлены в $scope.rows
, и только после нажатия на заголовок столбца они должны упорядочиваться по определенному свойству. Вот моя скрипка:
Вот мой взгляд:
<table ng-app ng-controller="ctrl">
<tr>
<th><a ng-click="orderBy = 'id'">ID</a></th>
<th><a ng-click="orderBy = 'name'">Name</a></th>
</tr>
<tr ng-repeat="row in rows | orderBy:mySort">
<td>{{row.object.id}}</td>
<td>{{row.object.name}}</td>
</tr>
</table>
Вот мой контроллер:
function ctrl($scope)
{
// Initially, we don't sort by anything
$scope.orderBy = "";
$scope.rows = [];
// Add some rows
for(var i = 10;i < 30;i++)
{
$scope.rows.push({settings: {foo: true}, object: {id: i, name: "Name " + i}})
};
$scope.mySort = function(row)
{
if($scope.orderBy != "")
{
return row.object[$scope.orderBy];
}
// What do I return here??
return "";
}
}
В случае, если $scope.orderBy
не задано и я хочу вернуть $scope.rows
в исходном порядке, что мне вернуть в $scope.mySort
? Я не могу return row.object.id
, потому что не гарантируется, что строки будут добавлены в порядке их идентификатора. Запустив мой код в Chrome 32, первая строка, которая появляется, имеет идентификатор 20, что является промежуточной строкой.
return row.object.id
? - person DCoder   schedule 30.01.2014