возможно передавать методы дочерним компонентам, но это немного неловко.Более идиоматический подход - запустить событие из дочернего компонента и прослушать это событие из родительского компонента:
App.html
<div>
<TodoItem
{todo}
on:toggle="toggle(todo)"
/>
</div>
<script>
import TodoItem from './TodoItem.html';
export default {
components: {
TodoItem,
},
methods: {
toggle(todo) {
todo.done = !todo.done;
const { todos } = this.get();
this.set({ todos });
}
}
};
</script>
TodoItem.html
<div>
<button on:click="fire('toggle')">{todo.description}</button>
</div>
Если вам нужно пропустить событие через несколько уровней компонентов, вы можете просто обновить событие ...
<TodoItem on:toggle="fire('toggle', event)">...</TodoItem>
... нодля этого есть сокращение, которое означает то же самое:
<TodoItem on:toggle>...</TodoItem>