【问题标题】:repopulate form data from an existing document从现有文档重新填充表单数据
【发布时间】:2015-12-22 00:43:12
【问题描述】:

我正在尝试使用他们最初在 Meteor 中创建帐户时填写的用户数据重新填充 HTML 表单上的字段,以允许他们编辑信息。该表单包含各种输入、选项列表和复选框。数据毫无问题地存储在集合中。我在用户配置文件中有一个名为 profComp 的字段,它是真还是假,取决于之前是否填写过表格。我试图在路由上添加 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() 放在各种模板事件中,它们似乎没有被调用

任何人都可以就我可能出错的地方提供建议吗?谢谢

【问题讨论】:

    标签: forms meteor iron-router


    【解决方案1】:

    由于您没有给我们您的表单代码,我只是假设您正确地为您的输入提供了&lt;input name="myInput" value=myValueHelper&gt; 属性并继续。 据我所知,当您想从集合对象中检索数据时,您正试图从 Meteor 中最容易出错的对象之一 Meteor.users 获取数据。您可以在下面找到有关您的问题的一些可能性:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2011-04-11
      • 2017-09-23
      • 1970-01-01
      相关资源
      最近更新 更多