Aitom module je abstraktní předek pro jednotlivé modulové JS/TS.
npm i --save aitom-module
Od této třídy musí všechny modulové JS dědit aby fungovalo správně jejich automatické načítání.
Tato třída předepisuje dvě abstraktní metody a to: initOnLoad
a initAlways
, které musí implementovat každý z modulových JS.
Jak už by měl název napovědět initOnLoad
se volá při prvním načtení stránky kde se modul vyskytuje.
Pokud dojde k refreshy stránky metoda se tedy opět zavolá, protože z pohledu prohlížeče se to jeví jako první načtení. Pokud na stránku modulu příjdu poprvé z ajaxového požadavku metoda se také zavolá, protože instance modulu ještě neexistuje a opět se to bere jako první načtení.
Pokud už ovšem už došlo k zavolání této metody a stránka modulu je přenačtena ajaxově metoda už se znovu nezavolá.
Oproti tomu initAlways
se volá vždy kdy initOnLoad
navíc ale ještě při každém úspěšně dokončeném ajaxovém požadavku.
Tato metoda se proto používá pro akce, které potřebují provést reinicializaci i po ajaxovém requestu.
import Module from 'aitom-module';
export default class MyCustomModule extends Module
{
public initOnLoad():void
{
this.initWhatEverYouWant();
}
public initAlways():void
{
this.initSomenthingElse();
}
private initWhatEverYouWant():void
{
// something initialize here
}
private initSomenthingElse():void
{
// initialize something else which needs reinitialize after ajax
}
}
V Latte modulu stačí uvést například span element s příslušnou třídou js_aitomModule
a patřičně vyplněným data atributem module
<span class="js_aitomModule" data-module="MyCustomModule"></span>