2014-01-16 4 views
1

Учитывая следующее, я хочу заказать этот список displayOrderУгловые: нг-повторить OrderBy фильтр

angular.module('app').value('sidebarMenus', { 
    'Sites': { 
     displayName: 'Sites', 
     displayOrder: 0 
    }, 
    'Inspections': { 
     displayName: 'Inspections', 
     displayOrder: 1, 
     items: [ 
      { name: 'Create New', state: 'Admin.UserList' } 
     ] 
    }, 
    'Permits': { 
     displayName: 'Permits', 
     displayOrder: 2 
    }, 
    'Compliance': { 
     displayName: 'Compliance', 
     displayOrder: 3 
    }, 
    'Accounts': { 
     displayName: 'Accounts', 
     displayOrder: 4 
    }, 
    'Documents': { 
     displayName: 'Documents', 
     displayOrder: 5 
    }, 
    'Queries': { 
     displayName: 'Queries', 
     displayOrder: 6 
    }, 
    'Reports': { 
     displayName: 'Reports', 
     displayOrder: 7 
    }, 
    'Admin': { 
     displayName: 'Admin', 
     displayOrder: 8, 
     items: [ 
      { name: 'Users', state: 'Admin.UserList' }, 
      { name: 'Groups', state: 'Admin.GroupList' }, 
      { name: 'Workgroups', state: 'na' }, 
     ] 
    } 
}); 

у меня есть, но это не работает. По какой-то причине это сортируется по алфавиту по умолчанию.

<li data-ng-repeat="item in sidebar.menus | orderBy: item.displayOrder"> 
    <a href="javascript:;" data-ng-bind="item.displayName" data-ng-click="sidebar.menu.setMenu(item)"></a> 
</li> 

Результат

Accounts 
Admin 
Compliance 
Documents 
Inspections 
Permits 
Queries 
Reports 
Sites 
+0

В [tutorial] (http://docs.angularjs.org/tutorial/step_04) 'orderBy' основан на свойстве самой модели, который хранит имя свойства, которое вы хотите заказать. Добавьте свойство 'orderProp =" displayOrder "', затем используйте его в 'repeat':' orderBy: orderProp'. –

+0

@ danradu - Это не сработало, все еще сортируется в алфавитном порядке. – Sam

+0

Вы попробовали только элемент data-ng-repeat = в sidebar.menus | orderBy: «displayOrder» для меня, используя пример в учебнике, который работал без проблем. Какую версию Angular вы используете? –

ответ

5

sidebarMenus является объектом. orderBy может применяться только к массивам. Вы не можете сортировать свойства объекта;)

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