dataTable () frente a DataTable (): ¿por qué hay una diferencia y cómo puedo hacer que funcionen juntos?

La gran mayoría de la documentación para este complemento indica que la inicializa con

$('#example').dataTable(); 

Sin embargo http://www.datatables.net/examples/api/multi_filter_select.html inicializa el uso

 $('#example').DataTable(); 

Los objetos resultantes difieren bastante, y la URL de ejemplo anterior no funciona cuando inicio con una minúscula ‘D’, sin embargo, casi todo lo demás requiere la inicialización en minúscula ‘D’.

¿Puede alguien explicarme por qué hay una diferencia y cómo hacer que los dos jueguen bien juntos? Básicamente, necesito la funcionalidad de selección de múltiples filtros, pero también necesito agregar otras llamadas / complementos, que no parecen gustarles de la inicialización en “D” en mayúscula.

Básicamente, los dos constructores devuelven diferentes objetos.


constructor de dataTable

 var table = $().dataTable() 

dataTable es el constructor dataTables de oldschool, que devuelve un objeto jQuery. Este objeto jQuery está enriquecido con un conjunto de métodos API en formato de notación húngaro, como fnFilter , fnDeleteRow , etc. Vea una lista completa de métodos API aquí . Ejemplos:

 table.fnDeleteRow(0); table.fnAddData(['E', 'F']); 

dataTable es compatible con todas las versiones 1.9.x / 1.10.x.


Constructor DataTable

 var table = $().DataTable() 

El constructor DataTable se introdujo en 1.10.x y devuelve un enorme objeto API con acceso completo de lectura / escritura a páginas, filas, celdas y más, consulte el manual . Equivalencias de ejemplo:

 table.row(0).remove(); table.row.add(['E', 'F']).draw(); 

Combinar dataTable y DataTable

Si mantiene el código anterior, o por alguna razón necesita usar el constructor dataTable de oldschool, pero aún necesita usar la nueva API, el objeto jQuery se extiende (desde 1.10.0 ) con un método .api() que devuelve la nueva API . Equivalencias de ejemplo:

 var table = $('#example').dataTable(); table.api().row(0).remove(); table.api().row.add(['E', 'F']).draw(); 

La antigua API como table.fnDeleteRow(0) aún funciona. Entonces para su preocupación:

Básicamente, necesito la funcionalidad de selección de múltiples filtros, pero también necesito agregar otras llamadas / complementos, que no parecen gustarles de la inicialización en “D” en mayúscula.

Como ves, ¡puedes hacer ambas cosas! Inicialice tablas de datos de la manera antigua, y use .api() cuando necesite acceder a la nueva API.


¿Por qué hay tantos ejemplos oficiales que usan dataTable ()?

Bueno, no necesitas usar el constructor DataTable . Si no usa la API nueva, no hay ninguna razón para usar el constructor DataTable . El constructor oldschool dataTable no está en desuso. DataTables es principalmente un trabajo de hombre. Es una gran tarea mantener y desarrollar, y obviamente requiere mucho tiempo mantener un gran sitio web con foros, manuales, montones de ejemplos, etc. Esto es solo una suposición, pero supongo que Allan Jardine solo ha cambiado dataTable a DataTable donde realmente se necesita, simplemente porque no puede hacerlo todo en un solo paso.

Intereting Posts