<div id="counter">
<p>Count: <span z-text="count"></span></p>
<button @click="inc">+1</button>
</div>
<script type="module">
import { createApp, ref } from './zog.js';
createApp(() => {
const count = ref(0);
const inc = () => count.value++;
return { count, inc };
}).mount('#counter');
</script>
<div id="todo">
<input z-model="newItem" placeholder="Add todo" />
<button @click="add">Add</button>
<ul>
<li z-for="(item, i) in todos">
{{ i + 1 }}. {{ item }}
<button @click="remove(i)">remove</button>
</li>
</ul>
</div>
<script type="module">
import { createApp, reactive, ref } from './zog.js';
createApp(() => {
const state = reactive({ todos: ['Buy milk'] });
const newItem = ref('');
function add() {
if (newItem.value.trim()) {
state.todos.push(newItem.value.trim());
newItem.value = '';
}
}
function remove(i) {
state.todos.splice(i, 1);
}
return { todos: state.todos, newItem, add, remove };
}).mount('#todo');
</script>
<div id="cond">
<button @click="toggle">Toggle</button>
<template z-if="show">
<p z-html="htmlContent"></p>
</template>
</div>
<script type="module">
import { createApp, ref } from './zog.js';
createApp(() => {
const show = ref(true);
const htmlContent = ref('<em>Rendered HTML</em>');
const toggle = () => show.value = !show.value;
return { show, htmlContent, toggle };
}).mount('#cond');
</script>