Svelte - 如何在模板中使用方法?

Svelte - how to use methods in template?

使用 vue,我通常将任何复杂的逻辑提取到方法中,例如

<li v-for="todo in todos" v-show="!isTodoComplete(todo)">
  {{ todo }}
</li>

但是当我在 svelte 上尝试相同的方法时:

{#each todos as todo}
    <li hidden={isComplete(todo)}>{todo}</li>
{/each}
...
methods: { isComplete (todo) { ... } }

我遇到错误 TypeError: ctx.isComplete is not a function

我是不是做错了什么?如何做这样的事情?

Svelte 区分 helpers and methods

Helpers 是在模板中用于处理数据的函数——它们应该是纯函数,并且除了作为参数传入的内容(例如 todo 对象)。

方法 事情的函数,通常是响应事件。他们确实有权访问组件状态。

在这种情况下,isComplete 应该是帮助程序,而不是方法。