Meteor:重新渲染多个选择后,预选选项丢失

时间:2013-07-31 21:27:45

标签: meteor

我在Meteor.js中有一个带有Handlebar模板的多重选择。在第一次渲染时,一切都很好(“Politics”和“People”按预期预先选择):

Multiple select on first render

只要重新呈现模板(因为会话变量发生变化,例如Session.set("foo", "Hello World!")),就不再预先选择第三个选项:

Multiple select after dynamic changes

我的设置:

<template name="select">
  <select name="foo" multiple>
    <option value="1">Tech</option>
    <option value="2" selected>Politics</option>
    <option value="3" selected>People</option>
  </select>
</template>

<template name="test">
  {{foo}}
  {{> select}}
</template>

{{> test}}
Template.test.helpers(
  foo: ->
    Session.get("foo")
)

你知道为什么在重新渲染之后再选择这些选项了吗?

2 个答案:

答案 0 :(得分:1)

解决方案是:

<template name="test">
  {{#isolate}}
    {{foo}}
  {{/isolate}}      
  {{> select}}
</template>
  

通常,重新渲染的确切程度并不重要,但如果你   想要更多的控制,比如出于性能原因,可以使用   {{#isolate}} ... {{/ isolate}}帮助器。建立了数据依赖性   #isolate块内部是本地化的块,不会在   它们自己导致父模板被重新渲染。这个块   助手基本上传达了你所获得的反应性好处   将内容拉出到新的子模板中。

如果您将{{foo}}放在{{#isolate}} ... {{/isolate}}内,则不会重新呈现父模板,因此{{> select}}也不会受到影响。

答案 1 :(得分:0)

所以我不确定您为什么要放弃多重选择,但我建议您在{{#isolate}}模板周围添加{{> select}}标记。这应该保持模板不被重新渲染。如果您的选择模板因其数据更改而重新渲染,则无济于事。希望有所帮助...