重新填充现有文档中的表单数据

时间:2015-12-21 15:42:48

标签: forms meteor iron-router

我正在尝试重新填充HTML表单上的字段,这些字段包含他们最初填写的用户数据,这些数据是他们第一次在Meteor中创建帐户以允许他们编辑信息。表单包含各种输入,选项列表和复选框。数据存储在集合中,没有任何问题。我在用户配置文件中有一个名为profComp的字段,如果表单之前已填写过,则该字段为true,具体取决于false。我试图在路线上添加一个if / else语句 -

Router.route("/edit_dashboard", function(){
  if(Meteor.user().profile.profComp)
  {
    this.render("change_edit_dashboard");
  }
  else
  {
    this.render('edit_dashboard');
  }

change_edit_dashboard是用户最初填写的html表单的副本,我在change_edit_dashboard模板中添加了一个帮助程序,以从集合中检索用户信息文档。

  Template.change_edit_dashboard.helpers({
    formData: function()
    {
      return Base.findOne({_id: Session.get('baseId')})
    }
  });

并尝试在change_edit_dashboard中使用空格键{{#with}}调用文档上下文

<template name="change_edit_dashboard">
  {{#with formData}}
    ----> form code <------
  {{/with}}
</template>

然而,似乎发生了一些奇怪的事情 -

  • change_edit_dahsboard模板根本没有渲染。 formData帮助器似乎没有被调用,因为我没有得到测试console.log()我在控制台中写了显示。
  • 添加此代码似乎打破了其他模板的所有功能。我已将测试console.log()放在各种模板事件中,它们似乎没有被调用

有人可以告诉我可能出错的地方吗?谢谢

1 个答案:

答案 0 :(得分:0)

由于您没有向我们提供您的表单代码,因此我假设您正确地为您的输入提供了<input name="myInput" value=myValueHelper>属性并继续。 从我看到的情况来看,当你想要从集合对象中检索数据时,你试图从Meteor中最易出错的对象之一获取数据Meteor.users。您可以在下面找到有关您的问题的一些可能性:

  • Meteor.user().profile.profComp不存在。当您操纵Meteor.users集合时,您必须采取一些额外步骤才能访问存储在那里的数据。例如,如果我的mySuperField模型的根目录中有Meteor.users字段,我必须在服务器端发布它才能在客户端上订阅和检索它。您可以通过致电Meteor.user()快速查看它,看看它是否存在。
  • 如果你的服务器端没有错误的空白屏幕,通常是因为你打破了模板负载。检查Web控制台顶部的错误消息,确保没有将模板助手放在服务器上执行的文件中或Meteor加载.html文件之前。

我不确定为什么你需要2个编辑模板,但如果它只是新编辑的问题,你应该考虑使用简单模式的autoform,因为它将极大地帮助你完成表单。你可以在下面找到这些链接。

https://github.com/aldeed/meteor-simple-schema

https://github.com/aldeed/meteor-autoform