X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fviews%2Fjs%2Fajax_view.js;fp=web%2Fcore%2Fmodules%2Fviews%2Fjs%2Fajax_view.js;h=95a803d7fec8ab22d42b8a87704f6a5f557318f2;hp=a10eb837eb9701425512aa126fb8f9272efaac88;hb=0bf8d09d2542548982e81a441b1f16e75873a04f;hpb=74df008bdbb3a11eeea356744f39b802369bda3c diff --git a/web/core/modules/views/js/ajax_view.js b/web/core/modules/views/js/ajax_view.js index a10eb837e..95a803d7f 100644 --- a/web/core/modules/views/js/ajax_view.js +++ b/web/core/modules/views/js/ajax_view.js @@ -7,14 +7,30 @@ (function ($, Drupal, drupalSettings) { Drupal.behaviors.ViewsAjaxView = {}; - Drupal.behaviors.ViewsAjaxView.attach = function () { - if (drupalSettings && drupalSettings.views && drupalSettings.views.ajaxViews) { - var ajaxViews = drupalSettings.views.ajaxViews; + Drupal.behaviors.ViewsAjaxView.attach = function (context, settings) { + if (settings && settings.views && settings.views.ajaxViews) { + var ajaxViews = settings.views.ajaxViews; + Object.keys(ajaxViews || {}).forEach(function (i) { Drupal.views.instances[i] = new Drupal.views.ajaxView(ajaxViews[i]); }); } }; + Drupal.behaviors.ViewsAjaxView.detach = function (context, settings, trigger) { + if (trigger === 'unload') { + if (settings && settings.views && settings.views.ajaxViews) { + var ajaxViews = settings.views.ajaxViews; + + Object.keys(ajaxViews || {}).forEach(function (i) { + var selector = '.js-view-dom-id-' + ajaxViews[i].view_dom_id; + if ($(selector, context).length) { + delete Drupal.views.instances[i]; + delete settings.views.ajaxViews[i]; + } + }); + } + } + }; Drupal.views = {};