1

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「舞台裏」を設定するにはどうすればよいですか?

4

3 に答える 3

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
    }
  }
});
于 2014-12-17T10:05:37.377 に答える
1

解決策の 1 つは、このオプションをユーザーに表示することではないと思います。フィールドにも追加する必要があるoptional:trueため、フォームを送信しても有効になります。

次に、フックを使用して、必要な他のデータを追加できるはずです

Doc はautoform で利用可能なフックです

私は通常、before insert

AutoForm.hooks({
  myFormId: {
    before: {
      insert: function(doc, template) {
        //modify the document here
      }
    }
})
于 2014-12-17T10:09:31.623 に答える
0

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);
于 2015-10-08T16:15:49.240 に答える