0

我正在使用aldeed:autoform以呈现表单并通过Meteor.method(). 我的表格如下所示:

SelectPlanTemplates = new SimpleSchema({
  templates: {
    type: [String],
    autoform: {
      options: function() {
        return PlanTemplates.find().map(function(doc) {
          return { label: doc.title, value: doc._id };
        });
      },
      noselect: true
    }
  },
  userId: {
    type: String,
    allowedValues: function() {
      return Meteor.users.find().map(function(doc) {
        return doc._id;
      });
    },
    autoform: {
      omit: true
    }
  }
});

在我的模板上,我只是执行以下操作。

+ionContent
  +quickForm(schema="SelectPlanTemplates" id="SelectPlanTemplatesForm" type="method" meteormethod="createPlanFromTemplates")

我的网址是这样构造的/plan/from_templates/{:userId}。我尝试在提交之前创建一个挂钩来添加用户 ID。

AutoForm.hooks({
  SelectPlanTemplatesForm: {
    before: {
      method: function(doc) {
        doc.userId = Router.current().params.userId;
        return doc;
      }
    }
  }
});

然而,它似乎从来没有达到这个钩子。

我将如何获取路由参数并将其与我的表单一起传递给具有自动表单的流星方法?

4

1 回答 1

0

我想我想出了一个有点奇怪的方法。

在路由器中:

this.route('selectPlans', {
  waitOn: function() {
    return Meteor.subscribe('plan_templates');
  },
  path: '/select/plan_templates/:_id',
  template: 'selectTemplates',
  data: function() {
    return new selectPlanTemplates({ userId: this.params._id });
  }
});

然后我添加doc=this到我的模板

于 2015-04-02T17:43:05.047 回答