如何添加自动窗体与流星关系或引用?(How to add a relationship or ref

2019-10-21 10:18发布

我用meteor-autoform插入一个集合中的文档。 我的Items有一个字段groupId 。 我怎样才能插入此组ID,当我提交我的项目形式。

<template name="itemForm">
  {{#autoForm type="insert" collection=Collections.Items}}
    {{> afQuickField name="name"}}
    <div class="form-group">
      <button type="submit" class="btn btn-primary">Add item</button>
      <button type="reset" class="btn btn-default">Reset Form</button>
    </div>
  {{/autoForm}}
</template>

我可以创建一个包含我的组ID的另一个领域,但我不希望用户看到此字段。

我如何设置groupId “幕后”?

Answer 1:

对于这一点,你需要一个钩子 。 你也需要设置一个ID为形式,让我们说addItemForm

//Anywhere in your client code
Autoform.hooks({
  addItemForm : {
    onSubmit : function(doc) {
      doc.groupId = /*Get the group id*/;
      this.done(); //We've finished
      return true; //Let autoForm do his default job now
    }
  }
});


Answer 2:

我认为一个解决方案是不是这显示该选项用户。 您还需要添加optional:true到现场,所以它仍然是有效的,当你提交表单。

然后用钩子,你应该能够添加任何你想要的其他数据

文件可在自动窗体挂钩

我通常修改了该文档before insert

AutoForm.hooks({
  myFormId: {
    before: {
      insert: function(doc, template) {
        //modify the document here
      }
    }
})


Answer 3:

你可以使用doc=this如果模板的数据上下文可用。

例如:

<template name="itemForm">
  {{#autoForm id="insert-item-form" type="insert" collection=Collections.Items doc=this}}
    {{> afQuickField name="name"}}
    <div class="form-group">
      <button type="submit" class="btn btn-primary">Add item</button>
      <button type="reset" class="btn btn-default">Reset Form</button>
    </div>
  {{/autoForm}}
</template>

在进一步的结果是,你可以设置这将插入操作之前被触发钩:

var itemsHooks = {
    before: {
        insert: function (doc) {
            doc.groupId = this.currentDoc._id;
            return doc;
        }
    }
};

AutoForm.addHooks('insert-item-form', itemsHooks);


文章来源: How to add a relationship or reference with AutoForm in Meteor?