2016-12-05 5 views
0

У меня есть следующий объект, который содержит 2 фиксированных атрибута (OrderId и Buyasedate и массив атрибутов). Я пытаюсь поместить это в ng-repeat с параметром orderBy. атрибут (OrderId и PurchaseDate) работает нормально, когда сортировка применяется при нажатии на заголовок. Однако я не заставить его работать на атрибуте 3-го и так далее.ng-repeat orderby динамической длины объекта

строки, приведенные в таблице являются правильными.

Объект выглядит как например

$scope.orders; 
[ 
    { OrderId: "P888291", PurchaseDate : "2016-12-02", 
    Items: { elt : [ { Name: "City", Value: "New York"}, { Name: "Street", Value: "Broadway 5" }, { Name: "Country", Value: "USA" } ] } }, 
{ OrderId: "P334498", PurchaseDate : "2016-11-02", 
    Items: { elt : [ { Name: "City", Value: "London" }, { Name: "Street", Value: "WestMinister 3" }, { Name: "Country", Value: "Great Brittain" } ] } }, 
{ OrderId: "G393383", PurchaseDate : "2016-11-28", 
    Items: { elt : [ { Name: "City", Value: "Milan" }, { Name: "Street", Value: "Pizza 8" }, { Name: "Country", Value: "Italy" } ] } }, 
{ OrderId: "P978381", PurchaseDate : "2015-05-25", 
    Items: { elt : [ { Name: "City", Value: "Seattle" }, { Name: "Street", Value: "Houston 9" }, { Name: "Country", Value: "US" } ] } }, 
{ OrderId: "P983394", PurchaseDate : "2015-06-05", 
    Items: { elt : [ { Name: "City", Value: "Amsterdam" }, { Name: "Street", Value: "Damrak 5" }, { Name: "Country", Value: "Netherlands" } ] } }, 
{ OrderId: "G678994", PurchaseDate : "2015-04-01", 
    Items: { elt : [ { Name: "City", Value: "The Hague" }, { Name: "Street", Value: "Markt 22" }, { Name: "Country", Value: "Netherlands" } ] } }, 

{ OrderId: "P128994", PurchaseDate : "2016-12-04", 
    Items: { elt : [ { Name: "City", Value: "The Hague" }, { Name: "Street", Value: "Plein 7" }, { Name: "Country", Value: "Netherlands" } ] } }, 
]; 

Пожалуйста посоветуйте и код помещается в:.

http://www.w3schools.com/code/tryit.asp?filename=FAG7BWVK8BYH

ответ

0

Вы можете попробовать с помощью логики пользовательского фильтра (https://docs.angularjs.org/api/ng/filter/orderBy) , например:

JS:

$scope.filterOrderFn = function(orderobj) 
{ 
// Do 

if(...) 
{ 
    return _something_// this will be your sorted order according to your first condition 
} 
else if(...) 
{ 
    return _something_ // this will be your sorted order according to your second condition if require 
} 

return false; // otherwise it won't be within the orderlist 
}; 

HTML:

... 
<article data-ng-repeat="order in orders | orderBy:filterOrderFn" class="order"> 
... 

Если вам нужно очень специфическое поведение заказа, вы можете написать свой собственный фильтр (хотя orderBy должно быть достаточно для большинства случаев использования). Как вы можете знать, вы можете связать множество фильтров вместе, поэтому добавление пользовательской функции фильтрации не заставляет вас удалять предыдущий фильтр с помощью объекта поиска (они будут работать вместе без проблем).

Смежные вопросы