伏特迭代与承诺的比较

Volt iteration comparison with promise

如果我使用 .each_with_index 遍历 ArrayModel,有没有一种方法可以根据当前 index 与 [=13] 的结果进行渲染决策=](目前,这个比较 returns 是关于比较 NumericPromise 的错误)?

实际上,我有一个默认呈现十个项目的列表,用户可以要求呈现 20、30 等。如果我让用户选择更改 query,然后整个列表重新呈现,这很慢。如果我将他们的选择 {{ if index < selected_limit }} 从 false 更改为 true,则只有新显示的项目会重新呈现。但这仅在可以完成 indexPromise (selected_limit) 的比较时才有效。有办法吗?

你应该可以用.value来对比,我自己在一个项目中就是这么干的。

{{ store.players.each do |player| }}
  {{ unless player == current_player.value }}
    <table class='player'>
      <tr><td>{{ player.name }}</td></tr>
      <tr><td><button e-click='add_vote(player.id)'>+1</button></td></tr>
    </table>
  {{end}}
{{end}}

是的,if 绑定可以接受承诺,所以您可以做的是 return 解析为 true 或 false 的新承诺,并且 if 绑定将在承诺解析后更新。

{{ store.todo.each_with_index do |todo, index| }}
  {{ if todo.selected_limit.then {|limit| index < limit } }}
    ....
  {{ end }}
{{ end }}

让我知道从那以后是否可行。在 promise 上调用 .then 将在解析后将值作为参数传递,但 .then {...} 的结果将是一个新的 promise。