Извлекать случайное количество элементов из источника данных Angular JS?

#javascript #angularjs

#javascript #angularjs

Вопрос:

Я искал и могу найти только вещи, связанные со случайным элементом, но то, что я хочу сделать, это получить (например) 7 случайных элементов из большей группы элементов.

Итак, прямо сейчас у меня есть код, который дает мне первые 7 элементов в моих данных, но вместо этого я хочу извлечь 6 случайных элементов.

 <ul class="block-grid-4">
    <li ng-repeat="icon in icons | limitTo:7"><i class="fa fa-fw fa-{{icon.id}}"></i> fa-{{icon.id}}</li>
  </ul>
 

Как я могу просто получить 7 (или любое произвольное число) элементов?

Мой сервис

 .factory('FaIconFactory', ['$http',
    function($http) {

        return {
            getIcons: function() {
                var icons = $http.get('scripts/data/fa_icons.js').then(function(response) {
                    return response.data.icons;
                });

                return icons;
            }
        };
    }
]);
 

Комментарии:

1. Когда вы вызываете метод service и сохраняете значки в переменной scope, перетасуйте массив. Или создайте фильтр, который делает это, чтобы вы не возились с необработанными данными (и добавьте limitTo:7 после этого фильтра). Если вы хотите рандомизировать количество отображаемых элементов, сгенерируйте случайное число при получении значков и установите его в области видимости. Используйте эту переменную области вместо 7

2. Это имеет смысл. Спасибо.

3. Вот пример того, что я имел в виду: jsfiddle.net/4RAXk — к сожалению, я не смог заставить a filter работать, потому что это вызывало слишком много дайджестов в Angular