Framework7 - Lista virtual

Descripción

La lista virtual es un tipo de vista de lista, que incluye una gran cantidad de elementos de datos sin disminuir su rendimiento. Puede crear un diseño HTML de la lista virtual utilizando la clase de lista virtual junto con la clase de bloque de lista .

Inicializar lista virtual

Puede inicializar la lista virtual utilizando el siguiente método:

myApp.virtualList(listBlockContainer, parameters)

El método contiene los siguientes parámetros:

  • listBlockContainer - Es un elemento HTML o de cadena obligatorio para el contenedor de bloques de lista.

  • parameters - Es un objeto obligatorio, que incluye parámetros de lista virtual.

Parámetros de lista virtual

La siguiente tabla proporciona una lista de parámetros virtuales:

S. No Descripción de parámetros Tipo Defecto
1

items

Proporciona una lista de elementos de la matriz.

formación -
2

rowsBefore

Define el número de filas que se mostrarán antes de desplazarse por la posición de la pantalla.

número -
3

rowsAfter

Define el número de filas que se mostrarán después de desplazarse por la posición de la pantalla.

número -
4

cols

Especifica el número de elementos por fila.

número 1
5

height

Este parámetro devuelve la altura del elemento en px.

número o función (artículo) 44
6

template

Representa el artículo único.

cadena o función -
7

renderItem

Utiliza una función personalizada para mostrar el elemento HTML.

función (índice, artículo) -
8

dynamicHeightBufferSize

Especifica el tamaño del búfer en la lista virtual junto con la altura dinámica.

número 1
9

cache

Puede habilitar o deshabilitar la caché DOM para la lista de elementos.

booleano cierto
10

updatableScroll

Actualiza el dispositivo y manipula los eventos de desplazamiento cuando se desplaza por la página.

booleano -
11

showFilteredItemsOnly

Muestra los elementos filtrados mediante el método filter ().

booleano falso
12

searchByItem

Se utiliza para buscar el elemento mediante la barra de búsqueda y utiliza la consulta de búsqueda, el índice del elemento y el elemento en sí como parámetros.

función (consulta, índice, elemento) -
13

searchAll

Se utiliza para buscar todos los elementos mediante la barra de búsqueda y utiliza la consulta de búsqueda y la matriz de elementos como parámetros.

función (consulta, elementos) -
14

onItemBeforeInsert

Ejecuta la función de devolución de llamada antes de insertar el elemento en el fragmento del documento virtual.

función (lista, artículo)
15

onBeforeClear

Ejecuta la función de devolución de llamada antes de eliminar la lista DOM y reemplazarla con un nuevo fragmento de documento.

función (lista, artículo)
dieciséis

onItemsBeforeInsert

Ejecuta la función de devolución de llamada después de eliminar la lista DOM y antes de insertar un nuevo fragmento de documento.

función (lista, artículo)
17

onItemsAfterInsert

Ejecuta la función de devolución de llamada después de insertar los elementos con el nuevo fragmento de documento.

función (lista, artículo)

Propiedades de lista virtual

S. No Descripción de propiedad
1

myList.items

Muestra la matriz con elementos.

2

myList.filteredItems

Muestra la matriz con elementos filtrados.

3

myList.domCache

Representa los elementos con caché DOM.

4

myList.params

Muestra los parámetros que se pasan en la inicialización.

5

myList.listBlock

Especifica el contenedor de bloques de lista de la instancia DOM7.

6

myList.pageContent

Especifica el contenedor de contenido de la página de la instancia DOM7.

7

myList.currentFromIndex

Muestra el primer elemento renderizado.

8

myList.currentToIndex

Muestra el último elemento renderizado.

9

myList.reachEnd

Muestra el último elemento de todos los elementos especificados si es verdadero.

Métodos de lista virtual

S. No Método y descripción
1

myList.filterItems(indexes);

Puede filtrar los elementos utilizando una matriz con índices.

2

myList.resetFilter();

Muestra todos los elementos evitando el filtro.

3

myList.appendItem(item);

Agrega los elementos a una lista virtual.

4

myList.appendItems(items);

Agrega la matriz de elementos a una lista virtual.

5

myList.prependItem(item);

Antepone los elementos a una lista virtual.

6

myList.prependItems(items);

Antepone la matriz de elementos a una lista virtual.

7

myList.replaceItem(index, items);

Reemplaza el elemento con un elemento nuevo en el índice especificado.

8

myList.replaceAllItems(items);

Reemplaza todos los elementos con los nuevos elementos.

9

myList.moveItem(oldIndex, newIndex);

Transfiere elementos del índice antiguo al nuevo.

10

myList.insertItemBefore(index, item);

Puede insertar el elemento antes del índice especificado.

11

myList.deleteItem(index);

Puede eliminar el elemento en el índice especificado.

12

myList.deleteItems(indexes);

Puede eliminar los elementos de la matriz de índices especificada.

13

myList.deleteAllItems();

Elimina todos los elementos.

14

myList.clearCache();

Se utiliza para borrar la caché de elementos DOM.

15

myList.destroy();

Destruye la lista virtual y sus eventos.

dieciséis

myList.update();

Actualiza la lista virtual y vuelve a renderizar la lista virtual.

17

myList.scrollToItem(index);

Puede desplazarse por la lista virtual al elemento utilizando el número de índice.

Plantillas

A veces es necesario filtrar o cargar los elementos de los datos JSON utilizando cierta lógica. Para hacer esto, puede pasar una matriz con objetos de datos usando el parámetro de elementos y el parámetro de plantilla o usando el parámetro renderItem .

Puede usar el parámetro de plantilla Framework7 de la siguiente manera:

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

También puede usar la función de renderizado personalizado como se muestra a continuación:

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

Usar con la barra de búsqueda

Puede utilizar SearchAll o searchByItem parámetros con el fin de utilizar la barra de búsqueda con la lista virtual que suministra la función de búsqueda de parámetros.

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

Usando el parámetro 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;
         }
      }
   }
});

Altura dinámica

Puede utilizar la altura dinámica para los elementos utilizando el parámetro de altura en lugar de un número.

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

Métodos API

Puede utilizar los métodos de la API para agregar, eliminar, reemplazar o mover elementos de la lista virtual.

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