让流星重新渲染“不变”字段

时间:2015-08-13 09:17:30

标签: javascript meteor meteor-blaze

下面的(简化)模板呈现一个带有两个输入字段的表单,根据数据上下文预先填充。可以为几个不同的数据上下文打开表单(尽管一次只能打开一个),在这种情况下,我希望所有字段都使用新数据重新呈现 - 主要发生。

<template name="form">
    <input type="text" value="{{title}}">
    <input type="text" value="{{start_value}}">
</template>

当两个数据上下文对于任一字段具有相同的值时出现问题 - 例如start_value为0非常常见。在这种情况下,当数据上下文切换时,不会重新呈现相应的输入字段。也许一个例子是有序的:

  1. 用户使用start_value = 0
  2. 打开数据上下文的表单
  3. 用户将start_value对应的输入字段从0更改为12
  4. 用户关闭表单而不保存
  5. 用户使用start_value = 0
  6. 打开另一个数据上下文的表单
  7. start_value对应的字段仍然显示12
  8. 这似乎适用于所有(原始)相同的值。使用帮助器返回值只会改变,但会确认帮助程序正在按预期重新运行。

    我可以在模板实例上使用autorun-afterflush来明确更新输入字段,但有没有更惯用的方法让Meteor重新渲染“未更改”字段?

    编辑:

    这是working example(通过工作,我的意思是它显示了什么不起作用)。

    只需在干净的Meteor项目的客户端目录中创建这两个文件,您就应该能够观察到这种行为。第1项和第2项具有保存value,因此即使您手动更改了第二个输入字段,也可以在它们之间切换时更改。第3项和第4项具有相同的title并表现出类似的行为。

1 个答案:

答案 0 :(得分:1)

我不确定我是否在回答您的问题,但是如果您在用户关闭表单后尝试清除值,以便在重新打开时不会重新填充该值,那么您可以使用the onDestroyed function

执行您需要的任何清理,例如清除在打开表单时看起来像您设置的会话。