2016-10-30 3 views
0

Я использую JS-скрипт для целей пользовательского интерфейса в области CMS, используя декоратор для LeftAndMain.SilverStripe с использованием требований() для каждого вызова AJAX

class LeftAndMainTweaks extends LeftAndMainExtension { 
    public function init() { 

    parent::init(); 

    // My JS script 
    Requirements::javascript('mymodule/js/myscript.js'); 
    } 
} 

Скрипт загружается только один раз и не каждый раз для вызова AJAX (например, просматривая страницы или ModelAdmin в), который разрушает некоторые из функциональных возможностей JS.

Как заставить внешний JS-скрипт перезагружаться после каждого вызова AJAX?

ответ

1

Вам не нужно принудительно перезагружать скрипты. Вместо этого используйте перехватывающие крючки.

Общим шаблоном является использование onmatch и onunmatch, например.

$('.my-selector').entwine({ 
    onmatch: function() { 
     // don't forget to call this._super(); 
     this._super(); 

     // Do your stuff to initialize your component 
    }, 

    onunmatch: function() { 
     this._super(); 
     // clean up your component, unbind event listeners etc. 
    } 
}); 

Если вид создает узел с .my-selector класса, onmatch будет называться, и вы можете инициализировать компонент там.

Поскольку вы не указали, что именно вы пытаетесь достичь, трудно дать лучшее руководство. Я думаю, что это тоже неплохое чтение, если вы новичок в переплетении: https://www.bigfork.co.uk/takeaway/a-beginners-introduction-to-using-entwine-in-silverstripe