/ / AngularJS: afficher un objet json aléatoire dans les 5 prochains jours d'événement - angularjs, json, angularjs-ng-repeat, ng-repeat, angular-filters

AngularJS: affiche un objet json aléatoire au cours des 5 prochains jours - angularjs, json, angularjs-ng-repeat, ng-repeat, filtres angulaires

J'ai une page d'événements qui présente de nombreux événements dans la région. Il y a un élément hero / banner en haut de la page sur lequel j'utilise un élément ng-repeat et je limite 1.

Ce que je voudrais faire, c'est que l'un des 3 prochains événements à venir soit affiché dans cette bannière. Ce serait donc un élément aléatoire qui apparaîtra là-dedans.

J'ai créé un filtre qui génère un aléatoirenombre entre 1 et 3, mais je ne suis pas certain de savoir comment filtrer mon json par ordre de date, puis dans le tableau de date ordonné pour générer mon nombre aléatoire et retirer 1 des 3 premiers de ce tableau.

Toute aide appréciée et ma répétition ressemble à ceci ...

<div ng-repeat="event in Event.events | dateFilter:From:To | Orderby: start_time | RandomGeneratorFilter | limitTo:1/>

Réponses:

0 pour la réponse № 1

J'ai réussi à le comprendre en faisant mon filtre ci-dessus (RandomGeneratorFilter) faire ce qui suit:

function RandomGeneratorFilter($filter){
return function(items,randomNum){
var results = [];
if(items && items.length >= 3){
var itemsLength = items.length;
results.push(items[randomNum]);
}else if(items && items.length < 3){
results.push(items[0]);
}
return results;
}
}

Où je passe dans randomNum comme mon calcul Math.floor ci-dessous:

vm.featuredRandom = Math.floor(Math.random()*(2-0+1)+0);

Donc, à la fin, ma répétition ng ressemble à ceci:

<div ng-repeat="event in Event.events | dateFilter:From:To | Orderby: start_time | RandomGeneratorFilter:vm.featuredRandom | limitTo:1/>