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