/ / AngularJS: Mostra um objeto json aleatório nos próximos 5 dias de evento - angularjs, json, angularjs-ng-repeat, ng-repeat, angulares-filtros

AngularJS: Mostra um objeto json aleatório nos próximos 5 dias do evento - angularjs, json, repetição angular-ng, repetição-ng, filtros angulares

Tenho uma página de eventos que mostra muitos eventos na área. Há um elemento herói / banner no topo da página que estou usando um elemento ng-repeat e limitando a 1.

O que eu gostaria de fazer é exibir 1 dos próximos 3 eventos neste banner. Portanto, seria um item aleatório que seria mostrado lá.

Eu criei um filtro que gera um aleatórionúmero entre 1 e 3, mas estou um pouco inseguro sobre como filtrar meu json por ordem de data e, em seguida, dentro da matriz ordenada por data para gerar meu número aleatório e retirar 1 dos 3 primeiros nessa matriz.

Qualquer ajuda apreciada e minha repetição fica assim ...

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

Respostas:

0 para resposta № 1

Eu consegui descobrir fazendo meu filtro acima (RandomGeneratorFilter) fazer o seguinte:

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;
}
}

Onde eu passo randomNum como meu cálculo Math.floor abaixo:

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

Então, no final, meu ng-repeat fica assim:

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