流星嵌入式文档的反应性

问题描述

我有一个引导程序模式,它将显示有关父文档的信息。然后,模态具有next/prev按钮,这些按钮可以围绕父文档列表旋转并以反应方式更改模态上显示的信息。它只需更改当前父项的next / prev onClick的ReactiveVar即可。这就像一种魅力。

我的问题是每个父母也显示一些子数据。子数据是嵌入式文档的数组。每个文档的属性都有一些HTML输入。我正在尝试预填充html输入的值。但是,我发现这不起作用。 idfoo是子文档的属性

对{{parent}}的调用是一种Helper方法,该方法从MiniMongo返回当前的parent。这似乎可以正常工作,因为父母的元数据会做出反应性变化。

{{#each parent.childrenArray}}
    <input type="text" id="{{id}}" value="{{foo}}">
{{/each}}

因此,问题在于HTML值不会更改。单击next仍会显示大孩子的价值。我了解嵌入式文档没有反应性,并且我确定这是问题所在。奇怪的是,实际上,我发现input's id被更改了。有人知道解决方案吗?谢谢!

当我尝试将子级保存回数据库时,这似乎发生了。即点击next / prev可以保存用户输入到HTML输入中的所有值,然后再转到下一个Parent并预加载其子元素

解决方法

如果parent是帮助者,那么我认为您不能使用下标符号来获取其属性,至少不能被动地获取它的属性。但是,您应该可以使用它代替

{{#with parent}}
  {{#each childrenArray}}
    <input {{attributes}}>
  {{/each}}
{{/with}}

更新:可能还需要做的另一件事是使用attribute helper。我还更新了上面的代码以使用此代码。

Template.yourTemplateName.helpers({
  attributes() {
    return {
      type: 'text',id: this.id,value: this.foo
    };
  }
});

更新2:

OP在git repo中“离线”工作,我意识到最好将模态主体作为一个单独的模板来完成,这样该模板的数据上下文将做出反应。问题中没有显示代码中有歧义的部分,因此,请仔细阅读此问题和答案。