Puncte:0

Cum obțin un eveniment JS atașat la mai multe rânduri de vizualizări

drapel pl

Creez un câmp de vizualizări personalizate și am nevoie ca acesta să aibă JS atașat la funcționalitatea de clic. Când obțin un rezultat de vizualizări, funcționează perfect, dar când am mai multe rezultate, se atașează doar la unul dintre ele. Cum fac ca acesta să se atașeze la toate rândurile de rezultat?

Mai jos este codul pentru redarea câmpului și js-ul care este atașat. Orice ajutor este apreciat.

<?php

/**
 * @fișier
 * Conține \Drupal\msul_views_alert_management\Plugin\views\area\alertManagement.
 */

spațiu de nume Drupal\msul_views_alert_management\Plugin\views\field;

utilizați Drupal\Core\Form\FormStateInterface;
utilizați Drupal\views\Render\ViewsRenderPipelineMarkup;
utilizați Drupal\views\ResultRow;
utilizați Drupal\views\ViewExecutable;
utilizați Drupal\views\Plugin\views\field\FieldPluginBase;

/**
 * Definește un plugin de câmp de vizualizări.
 *
 * @ingroup views_field_handlers
 *
 * @ViewsField(„alertFieldManagement”)
 */
clasa alertFieldManagement extinde FieldPluginBase {

  /**
   * {@inheritdoc}
   */
  funcția publică randare (ResultRow $valori) {
    $ieșire = matrice();
    $uuid=((matrice)($valori->_entitate))[chr(0).'*'.chr(0).'valori']['uuid']['x-default'];
    $body=((array)($values->_entity))[chr(0).'*'.chr(0).'values']['body']['x-default'];
    if(!isset($_COOKIE['EUA-'.$uuid]) || $_COOKIE['EUA-'.$uuid]!="Ascuns"){
      $ieșire = [
        'userAlert' => [
          '#type' => 'container',
          '#attributes' => [
            'class' => ['alerta utilizatorului'],
          ],
          'userAlertClose' => [
            '#type' => 'container',
            '#attributes' => [
              'uuid' => $uuid,
              'class' => ['butonul-alerta-utilizator-închidere'],
            ],
            'tempButton' => ['#markup' => 'X'],
          ],
          'alertText' => [
            '#markup' => check_markup($body[0]['value'],$body[0]['format']),
          ],
        ],
        '#attached' => [
          'library' => ['msul_views_alert_management/alert_field_management-js'],
          'drupalSettings' => [
            'msul_views_alert_management' => [
              'uuid' => $uuid,
            ],
          ],
        ],
      ];
    }
    returnează $ieșire;
  }

//... alt cod aici...

}
( funcția ($, Drupal, drupalSettings){
      uuid = drupalSettings.msul_views_alert_management.uuid;

      while($('[uuid="'+uuid+'"]').lungime > 1){
        $('[uuid="'+uuid+'"]').last().closest(".views-row").remove();
      }

      $('[uuid="'+uuid+'"]').on('clic',
        function() {
          $(this).closest(".views-row").remove();
          document.cookie = "EUA-"+uuid+"=Hidden;path=/;";
        }
      );
})(jQuery, Drupal, drupalSettings)
drapel pl
Voi lăsa întrebarea sus, deoarece sunt încă curios de răspuns, dar am decis să iau o altă cale pentru a rezolva problema și am atașat js la întreaga vizualizare (cu logică pentru a adăuga handler-ul de clic la fiecare câmp) în loc să atașez aceasta la câmpurile individuale.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.