/* it's necessary to make accessible count variable and showLoader function to parent */
<svelte:options accessors />
<script>
/* to make it accessible to parent we need to export this variable */
export let count = 0;
/* to make it accessible to parent we need to export this function */
export function showLoader() {
const loader = document.querySelector("oa-loader");
loader.show();
count++;
setTimeout(() => {
loader.hide();
}, 2000);
}
const showGlobalLoader = () => {
/* and here the loader is invoked through the global declaration window.app = {...} */
window.app.loader.show();
count++;
setTimeout(() => {
window.app.loader.hide();
}, 2000);
};
</script>
<template>
...
<Counter bind:this={myCounter} />
...
</template>
<script>
import logo from "./assets/svelte.png";
import Counter from "./lib/Counter.svelte";
let myCounter;
const showLoader = () => {
/* here the loader is invoked through the global declaration window.app = {...} */
window.app.loader.show();
/* we can access to the child component data property: count, via binding + exported variable and function */
myCounter.count++;
setTimeout(() => {
window.app.loader.hide();
}, 1000);
};
const callLoaderFromComponent = () => {
/* here the loader is invoked through the Counter component */
myCounter.count++;
myCounter.showLoader();
};
</script>