制作流星重新渲染 "unchanged" 字段
Making meteor rerender "unchanged" fields
下面的(简化)模板呈现了一个带有两个输入字段的表单,这些字段根据数据上下文进行了预填充。可以为多个不同的数据上下文打开表单(尽管一次只能打开一个),在这种情况下,我希望所有字段都使用新数据重新呈现 - 大多数情况下 会发生这种情况。
<template name="form">
<input type="text" value="{{title}}">
<input type="text" value="{{start_value}}">
</template>
当两个数据上下文的任一字段具有相同的值时就会出现问题 - 例如start_value
为 0 是很常见的。在这种情况下,相应的输入字段不会在数据上下文切换时重新呈现。也许有一个例子:
- 用户使用
start_value = 0
打开数据上下文的表单
- 用户将
start_value
对应的输入框由0
改为12
- 用户没有保存就关闭了表单
- 用户使用
start_value = 0
打开另一个数据上下文的表单
start_value
对应的字段还是12
这似乎发生在所有(原始)相同的值上。使用助手 return 该值没有任何变化,但确实确认助手正在按预期重新运行。
我可以通过在模板实例上使用 autorun-afterflush 来显式更新输入字段来解决这个问题,但是是否有更惯用的方法让 Meteor 重新渲染 "unchanged" 字段?
编辑:
这里是 working example(我所说的工作是指它显示了不工作的地方)。
只需在干净的 Meteor 项目的客户端目录中创建这两个文件,您就应该能够观察到行为。第 1 项和第 2 项具有保存 value
,因此当您在它们之间切换时第二个输入字段不会更改,即使您已手动更改它也是如此。第 3 项和第 4 项具有相同的 title
并表现出相似的行为。
我不确定我是否在回答你的问题,但如果你试图在用户关闭表单后清除一个值,这样它就不会在重新打开时重新填充该值,那么你可以使用 the onDestroyed function
进行您需要的任何清理,例如清除一个会话,该会话似乎是您在打开表单时设置的会话。
下面的(简化)模板呈现了一个带有两个输入字段的表单,这些字段根据数据上下文进行了预填充。可以为多个不同的数据上下文打开表单(尽管一次只能打开一个),在这种情况下,我希望所有字段都使用新数据重新呈现 - 大多数情况下 会发生这种情况。
<template name="form">
<input type="text" value="{{title}}">
<input type="text" value="{{start_value}}">
</template>
当两个数据上下文的任一字段具有相同的值时就会出现问题 - 例如start_value
为 0 是很常见的。在这种情况下,相应的输入字段不会在数据上下文切换时重新呈现。也许有一个例子:
- 用户使用
start_value = 0
打开数据上下文的表单
- 用户将
start_value
对应的输入框由0
改为12
- 用户没有保存就关闭了表单
- 用户使用
start_value = 0
打开另一个数据上下文的表单
start_value
对应的字段还是12
这似乎发生在所有(原始)相同的值上。使用助手 return 该值没有任何变化,但确实确认助手正在按预期重新运行。
我可以通过在模板实例上使用 autorun-afterflush 来显式更新输入字段来解决这个问题,但是是否有更惯用的方法让 Meteor 重新渲染 "unchanged" 字段?
编辑:
这里是 working example(我所说的工作是指它显示了不工作的地方)。
只需在干净的 Meteor 项目的客户端目录中创建这两个文件,您就应该能够观察到行为。第 1 项和第 2 项具有保存 value
,因此当您在它们之间切换时第二个输入字段不会更改,即使您已手动更改它也是如此。第 3 项和第 4 项具有相同的 title
并表现出相似的行为。
我不确定我是否在回答你的问题,但如果你试图在用户关闭表单后清除一个值,这样它就不会在重新打开时重新填充该值,那么你可以使用 the onDestroyed function
进行您需要的任何清理,例如清除一个会话,该会话似乎是您在打开表单时设置的会话。