Framework7 - Elenco virtuale

Descrizione

L'elenco virtuale è un tipo di visualizzazione elenco, che include un numero elevato di elementi di dati senza comprometterne le prestazioni. È possibile creare il layout HTML dell'elenco virtuale utilizzando la classe dell'elenco virtuale insieme alla classe del blocco dell'elenco .

Inizializza elenco virtuale

È possibile inizializzare l'elenco virtuale utilizzando il seguente metodo:

myApp.virtualList(listBlockContainer, parameters)

Il metodo contiene i seguenti parametri:

  • listBlockContainer - È un elemento HTML o stringa obbligatorio per il contenitore del blocco elenco.

  • parameters - È un oggetto obbligatorio, che include i parametri dell'elenco virtuale.

Parametri dell'elenco virtuale

La tabella seguente fornisce un elenco di parametri virtuali:

S.No Parametro e descrizione genere Predefinito
1

items

Fornisce un elenco di elementi dell'array.

Vettore -
2

rowsBefore

Definisce il numero di righe da visualizzare prima di scorrere la posizione dello schermo.

numero -
3

rowsAfter

Definisce il numero di righe da visualizzare dopo aver fatto scorrere la posizione dello schermo.

numero -
4

cols

Specifica il numero di elementi per riga.

numero 1
5

height

Questo parametro restituisce l'altezza dell'oggetto in px.

numero o funzione (elemento) 44
6

template

Rappresenta il singolo articolo.

stringa o funzione -
7

renderItem

Utilizza la funzione personalizzata per visualizzare l'elemento HTML.

funzione (indice, elemento) -
8

dynamicHeightBufferSize

Specifica la dimensione del buffer nell'elenco virtuale insieme all'altezza dinamica.

numero 1
9

cache

È possibile abilitare o disabilitare la cache DOM per l'elenco di elementi.

booleano vero
10

updatableScroll

Aggiorna il dispositivo e manipola gli eventi di scorrimento quando scorri la pagina.

booleano -
11

showFilteredItemsOnly

Visualizza gli elementi filtrati utilizzando il metodo filter ().

booleano falso
12

searchByItem

Viene utilizzato per cercare l'elemento utilizzando la barra di ricerca e utilizza la query di ricerca, l'indice dell'elemento e l'elemento stesso come parametri.

funzione (query, indice, elemento) -
13

searchAll

Viene utilizzato per cercare tutti gli elementi utilizzando la barra di ricerca e utilizza la query di ricerca e la matrice di elementi come parametri.

funzione (query, elementi) -
14

onItemBeforeInsert

Esegue la funzione di callback prima di inserire l'elemento nel frammento del documento virtuale.

funzione (elenco, elemento)
15

onBeforeClear

Esegue la funzione di callback prima di rimuovere l'elenco DOM e sostituito con un nuovo frammento di documento.

funzione (elenco, elemento)
16

onItemsBeforeInsert

Esegue la funzione di callback dopo aver rimosso l'elenco DOM e prima di inserire un nuovo frammento di documento.

funzione (elenco, elemento)
17

onItemsAfterInsert

Esegue la funzione di callback dopo aver inserito gli elementi con un nuovo frammento di documento.

funzione (elenco, elemento)

Proprietà elenco virtuale

S.No Proprietà e descrizione
1

myList.items

Visualizza l'array con gli elementi.

2

myList.filteredItems

Visualizza la matrice con gli elementi filtrati.

3

myList.domCache

Rappresenta gli elementi con cache DOM.

4

myList.params

Visualizza i parametri che vengono passati durante l'inizializzazione.

5

myList.listBlock

Specifica il contenitore del blocco dell'elenco dell'istanza DOM7.

6

myList.pageContent

Specifica il contenitore del contenuto della pagina dell'istanza DOM7.

7

myList.currentFromIndex

Visualizza il primo elemento renderizzato.

8

myList.currentToIndex

Visualizza l'ultimo elemento renderizzato.

9

myList.reachEnd

Visualizza l'ultimo elemento di tutti gli elementi specificati se è vero.

Metodi di elenco virtuale

S.No Metodo e descrizione
1

myList.filterItems(indexes);

È possibile filtrare gli elementi utilizzando array con indici.

2

myList.resetFilter();

Visualizza tutti gli elementi impedendo il filtro.

3

myList.appendItem(item);

Aggiunge gli elementi a un elenco virtuale.

4

myList.appendItems(items);

Aggiunge la matrice di elementi a un elenco virtuale.

5

myList.prependItem(item);

Antepone gli elementi a un elenco virtuale.

6

myList.prependItems(items);

Antepone la serie di elementi a un elenco virtuale.

7

myList.replaceItem(index, items);

Sostituisce l'elemento con un nuovo elemento all'indice specificato.

8

myList.replaceAllItems(items);

Sostituisce tutti gli articoli con i nuovi articoli.

9

myList.moveItem(oldIndex, newIndex);

Trasferisce gli elementi dal vecchio al nuovo indice.

10

myList.insertItemBefore(index, item);

È possibile inserire l'elemento prima dell'indice specificato.

11

myList.deleteItem(index);

È possibile eliminare l'elemento all'indice specificato.

12

myList.deleteItems(indexes);

È possibile eliminare gli elementi nella matrice di indici specificata.

13

myList.deleteAllItems();

Elimina tutti gli elementi.

14

myList.clearCache();

Viene utilizzato per svuotare la cache degli elementi DOM.

15

myList.destroy();

Distrugge l'elenco virtuale e i suoi eventi.

16

myList.update();

Aggiorna l'elenco virtuale e ne riproduce nuovamente l'elenco.

17

myList.scrollToItem(index);

È possibile scorrere l'elenco virtuale fino all'elemento utilizzando il numero di indice.

Modelli

A volte è necessario filtrare o caricare gli elementi dai dati JSON utilizzando una logica. Per fare ciò, puoi passare array con oggetti dati usando il parametro items e il parametro template o usando il parametro renderItem .

È possibile utilizzare il parametro del modello Framework7 come segue:

var myVal = myApp.virtualList('.list-block.virtual-list', {
   //List of array items
   items: [
      {
         name: 'Element 1',
         image: '/path/image1.jpg'
      },
      {
         name: 'Element 2',
         image: '/path/image2.jpg'
      },
      // ...
      {
         name: 'Element 50',
         image: '/path/image50.jpg'
      },
   ],
   
   // Display the each item using Template7 template parameter
   template: 
      '<li class = "item-content">' +
         '<div class = "item-media"><img src = "{{image}}"></div>' +
         '<div class = "item-inner">' +
            '<div class = "item-title">{{name}}</div>' +
         '</div>' +
      '</li>'
});

Puoi anche utilizzare la funzione di rendering personalizzata come mostrato di seguito:

var myVal = myApp.virtualList('.list-block.virtual-list', {
   //List of array items
   items: [
      {
         name: 'Element 1',
         image: '/path/image1.jpg'
      },
      {
         name: 'Element 2',
         image: '/path/image2.jpg'
      },
      // ...
      {
         name: 'Element 50',
         image: '/path/image50.jpg'
      },
   ],
   
   // Display the each item using custom render function
   renderItem: 
      '<li class = "item-content">' +
         '<div class = "item-media"><img src = "{{image}}"></div>' +
         '<div class = "item-inner">' +
            '<div class = "item-title">{{name}}</div>' +
         '</div>' +
      '</li>'
});

Utilizzo con la barra di ricerca

È possibile utilizzare i parametri searchAll o searchByItem per utilizzare la barra di ricerca con lista virtuale che fornisce la funzione di ricerca nei parametri.

var myVal = myApp.virtualList('.list-block.virtual-list', {
   //List of array items
   items: [
      {
         name: 'Element 1',
         image: '/path/image1.jpg'
      },
      {
         name: 'Element 2',
         image: '/path/image2.jpg'
      },
      // ...
      {
         name: 'Element 50',
         image: '/path/image50.jpg'
      },
   ],
   
   //Here you can searches all items in array and send back array with matched items
   searchAll: function (query, items) {
      var myItems = [];
      
         for (var i = 0; i < items.length; i++) {
            // Here check if name contains query string
            if (items[i].name.indexOf(query.trim()) >= 0) myItems.push(i);
         }
         
         // Returns array with indexes of matched items
         return myItems;
   }
});

Utilizzo del parametro searchByItem -

var myVal = myApp.virtualList('.list-block.virtual-list', {
   //List of array items
   items: [
      {
         name: 'Element 1',
         image: '/path/image1.jpg'
      },
      {
         name: 'Element 2',
         image: '/path/image2.jpg'
      },
      // ...
      {
         name: 'Element 50',
         image: '/path/image50.jpg'
      },
   ],
   
   //Here you can searches all items in array and send back array with matched items
   searchByItem: function (query, index, items) {
      // Here check if name contains query string
         if (items[i].name.indexOf(query.trim()) >= 0){
            return true;
         }  else {
            return false;
         }
      }
   }
});

Altezza dinamica

È possibile utilizzare l'altezza dinamica per gli elementi utilizzando il parametro di altezza invece di un numero.

var myVal = myApp.virtualList('.list-block.virtual-list', {
   //List of array items
   items: [
      {
         name: 'Element 1',
         image: '/path/image1.jpg'
      },
      {
         name: 'Element 2',
         image: '/path/image2.jpg'
      },
      // ...
      {
         name: 'Element 50',
         image: '/path/image50.jpg'
      },
   ],
   
   //template parameter
   template: '...',

   //using height function
   height: function (item) {
      if (item.image) return 120; //display the image with 100px height
      else return 50; //display the image with 50px height
   }
});

Metodi API

È possibile utilizzare i metodi API per aggiungere, rimuovere, sostituire o spostare gli elementi dell'elenco virtuale.

//Here you can initialize the list
var myVal = myApp.virtualList('.list-block.virtual-list', {
   //List of array items
   items: [
      {
         name: 'Element 1',
         image: '/path/image1.jpg'
      },
      {
         name: 'Element 2',
         image: '/path/image2.jpg'
      },
      // ...
      {
         name: 'Element 50',
			image: '/path/image50.jpg'
      },
   ],
   //template parameter
   template: '...',
});

//Here append your item
myVal.appendItem({
    image: 'Element 55'
});

// You can append multiple items when clicking on button
$('.button.append-items').on('click', function () {
   //You can append multiple items by passing array with items
   myVal.appendItem ([
      {
         image: 'Element 60'
      },
      {
         image: 'Element 61'
      },
      {
         image: 'Element 62'
      }
   ]);
});

//replace the first item
myList.replaceItem(0, {
   name: 'Element 4'
});

//you can display first 10 items when clicking on button
$('.button.show-first-10').on('click', function () {
   //Passing array with indexes to show items
   myList.filter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
});

//Reset the filter
$('.button.reset-filter').on('click', function () {
   myList.resetFilter();
});

//You can insert the item before 4th and 5th item
myList.insertItemBefore(1, {
   name: 'Element 4.5'
});