Значение orderBy для ng-options в парах ключ-значение - PullRequest
0 голосов
/ 15 мая 2019

Я не могу заказать пару значений ключа относительно value в в алфавитном порядке .

Пример, который я использую:

"week_days_short":[
    {"key":"1","value":"Mon"},
    {"key":"2","value":"Tue"},
    {"key":"4","value":"Thu"},
    {"key":"3","value":"Wed"},
    {"key":"5","value":"Fri"},
    {"key":"6","value":"Sat"},
    {"key":"7","value":"Sun"}
]

Я использовал следующий код,

ng-options="key as value for (key, value) in 
            properties.week_days_short | 
            orderBy:'value' track by value"

Но сортировка не происходит.Есть предложения?

Ответы [ 3 ]

1 голос
/ 15 мая 2019

angular.module("app",[])
.controller("ctrl", function($scope) {

$scope.properties = {
  "week_days_short":[
    {"key":"1","value":"Mon"},
    {"key":"2","value":"Tue"},
    {"key":"4","value":"Thu"},
    {"key":"3","value":"Wed"},
    {"key":"5","value":"Fri"},
    {"key":"6","value":"Sat"},
    {"key":"7","value":"Sun"}
  ]};

})
 <script src="//unpkg.com/angular/angular.js"></script>
 <body ng-app="app" ng-controller="ctrl">
    selection={{selection}}<br>
    Select with Alphabetical Order<br>
    <select ng-model="selection"
            ng-options="item.key as item.value for item in 
              properties.week_days_short | 
              orderBy:'value' track by item.value">
      <option value="">Select day</option>
    </select>
  </body>

ДЕМО на ПЛНКР

Для получения дополнительной информации см.

0 голосов
/ 21 мая 2019

Поскольку orderBy в HTML не будет работать с Object, а week_days_short - это массив.Так что сортировка на контроллере исправила мою проблему.

Object.values($scope.properties.week_days_short).sort()
0 голосов
/ 15 мая 2019

Я думаю, что это может вам помочь.

ng-options="key as value.sort((a, b) => a.key.localeCompare(b.key)) for (key, value) in 
        properties.week_days_short | 
        orderBy:'value' track by value"

Вот Ref: В ES6 / ES2015 или новее вы можете сделать это так

...