Abrir cuadro de diálogo ajax con JavaScript

Sep 18 2020

Al agregar use-ajaxun enlace, podemos abrir un modal utilizando la biblioteca ajax de Drupal según los documentos .

P.ej

<a class="use-ajax" 
    data-dialog-options="{&quot;width&quot;:400}" 
    data-dialog-type="modal" 
    href="/node/1">
    First article displayed in modal dialog.
</a>

Esto usará la biblioteca ajax para buscar el nodo / 1 y luego mostrarlo en un modal.

También hay una API de diálogo para JavaScript que permite abrir modales usando JavaScript.

P.ej

var myDialog  = Drupal.dialog(ADOMElement, settings);
myDialog.show();

El problema con esta API es que necesita pasar un elemento DOM existente.

Mi pregunta es ¿puedo activar la apertura de un modal con JavaScript y actualizar la biblioteca interna de Drupal ajax para recuperar el contenido?

Por ejemplo, ¿puedo hacer algo como esto?

var myDialog  = Drupal.dialog('/node/1', {useAjax: true});
myDialog.show();

Podría crear un enlace html según mi primer bloque de código, ocultarlo con css y luego activar un clic en él con JS, pero esto parece un poco hacky: debe haber una manera de activar esta acción usando JS puro.

Respuestas

2 4k4 Sep 18 2020 at 16:48

Puede activar Ajax en javascript personalizado. Consulte Cómo activar Ajax existente sin formulario desde un evento de JavaScript

En su caso, un cuadro de diálogo Ajax:

var ajaxSettings = {
  url: '/node/1',
  dialogType: 'modal',
  dialog: { width: 400 },
};
var myAjaxObject = Drupal.ajax(ajaxSettings);
myAjaxObject.execute();