Meteor autoform添加额外的输入

时间:2015-03-06 17:49:47

标签: meteor meteor-autoform

我想在AutoForm.hooks after回调中获取输入的值。此输入不是我的架构的一部分,它确定在表单提交后显示的模板(以及其他一些幕后的东西)。我在我的autoform模板中使用普通的html创建输入。

我试过

insert: function(error, result, template){
    `$(template.firstNode).parent().find(".my-input").val()` 
}

它似乎给了我默认模板html,而不是实时输入。

获得此输入值的最佳方法是什么?

更新

我试图通过简单地使用jQuery并选择输入来获取after回调中的输入值。但是,在运行后回调之前,表单会通过autoform中的某些方法清除,因此这是不行的。

我最终在before回调中全局存储了此值,然后在after回调中检查该值。

这似乎仍然是一种做事的hacky方式 - 我应该能够以某种方式获取这个值,即使我必须在特殊的'中创建输入。与autoform的方式。

另一个问题是,我一次可能在DOM中有多个此表单,因此我的解决方案在该实例中不会干净地工作。

2 个答案:

答案 0 :(得分:1)

要阻止AutoForm在提交时清除输入,您可以在autoform模板上指定resetOnSuccess=false。然后,您可以在钩子中获取所需输入的值,然后调用AutoForm.resetForm(formId)以手动清除表单。

答案 1 :(得分:0)

我想在这种情况下你做错了什么。使用autoform存储一种“魔法”听起来有点奇怪。

不可能使用例如会话对象并将数据存储在那里或检查是否可以通过特殊路由控制器来完成。

AutoForm.addHooks(['wordForm'], {
  after: {    
    insert: function(error, word, template) {
      if(!error){
        url = Router.current().params;
        Router.go('wordsList', {
            languageId: url.languageId, 
            character: url.character});
        Session.set('isModalShown', false);
      }
    },
    update: function(error, word, template) {
      if(!error){
        url = Router.current().params;
        Router.go('wordsList', {
            languageId: url.languageId, 
            character: url.character});
        Session.set('isModalShown', false);
      }
    },
  }
});

使用这种方法在保存后打开/关闭模态,并将此模态“绑定”到URL。