<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
<div x-data="app">
<p x-if="joke" x-text="joke"></p>
<button @click="newJoke">New Joke</button>
</div>
p {
font-size: 3em;
}
button {
height: 100px;
width: 250px;
font-size: 3em;
}
document.addEventListener("alpine:init", () => {
Alpine.data("app", () => ({
joke:null,
async init() {
console.log('init');
this.joke = await getDadJoke();
console.log(this.joke);
},
async newJoke() {
this.joke = await getDadJoke();
}
}));
});
async function getDadJoke() {
let resp = await fetch('https://icanhazdadjoke.com/', {
headers: {
'Accept':'application/json'
}
});
return (await resp.json()).joke;
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.