2

使用 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

难道我做错了什么?怎么做这样的事情苗条的方式?

4

1 回答 1

5

Svelte 区分了助手方法

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

方法是做事的函数通常是为了响应一个事件。他们确实可以访问组件状态。

在这种情况下,isComplete应该是一个助手,而不是一个方法。

于 2018-07-25T17:31:07.373 回答