3

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

我试过了

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

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

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

更新

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

我最终从回调内部全局存储该值before,然后在回调中检查该值after

这似乎仍然是一种很老套的做事方式——我应该能够以某种方式获取这个值,即使我必须使用 autoform 以“特殊”方式创建输入。

另一个问题是我可能一次在 DOM 中拥有多个这种表单,因此我的解决方案在这种情况下无法正常工作。

4

2 回答 2

1

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

于 2015-03-13T19:23:49.390 回答
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。

于 2015-03-06T23:22:37.320 回答