Volt迭代与承诺的比较

时间:2015-07-08 14:24:45

标签: comparison iteration rendering promise voltrb

如果我使用<form name="f1"> <input type='text' name='qty' id='qty' /> <input type='button' name='add' onclick='javascript:document.getElementById("qty").value++;' value='+'/> <input type='button' name='subtract' onclick='javascript: document.getElementById("qty").value--;' value='-'/> </form> 迭代ArrayModel,是否有办法根据当前.each_with_indexindex的结果进行渲染决策(目前,此比较会返回有关将PromiseNumeric进行比较的错误?

实际上,我有一个列表,默认情况下呈现十个项目,用户可以要求渲染20,30等。如果我有用户选择更改查询,那么整个列表重新渲染,这很慢。如果我将其选择从{false}更改为Promise,则只重新呈现新显示的项目。但是,只有在{{ if index < selected_limit }}indexPromise)进行比较时,这才有效。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您应该可以使用.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}}

答案 1 :(得分:2)

是的,如果绑定可以接受promises,那么你可以做的是返回一个解析为true或false的新promise,if绑定将在promises解析后更新。

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

如果是这样,请告诉我。调用.then on promise会在值结束时将值作为参数传递,但.then {...}的结果将是一个新的承诺。