javascript - 如何从自动表单 Hook 访问模板实例数据

标签 javascript meteor meteor-autoform

我声明一个与实例相关的字典。

Template.newMessage.onCreated(function () {
    var self = this;
    self.dict = new ReactiveDict('namedDic');
});

并通过助手和事件中的 Template.instance().dict.get() 访问它。

但是,自动表单在某处嵌套了另一个模板,因此我访问该字典的代码不再起作用:

AutoForm.hooks({
    serverCall: {
        before: {
            method: function (insert, update, current) {
                insert.foo = Template.instance().dict.get('foo'); <-- fails
                Meteor.call('serverCall', insert);
                return true;
            }
        }
    }
});

文档似乎没有提到任何访问父模板的方法,我不想开始猜测它有多少级父模板。

如果有什么区别的话,我的标记如下所示: +quickForm id='newMessage' schema='Schema.CustomMessage' type='method'meteormethod='serverCall'

这是一个 A->B 问题,我想做的只是让自动表单生成并验证一些字段,然后我可以在发送之前插入一些隐藏值作为 helper/event/hook 的一部分关闭到服务器。

最佳答案

我确信这不是最好的方法,但我通过在同一文件范围内设置外部变量来实现它。 示例:

var myNewMessageTemplate = null;

Template.newMessage.onCreated(function () {
    var self = this;
    self.dict = new ReactiveDict('namedDic');
    myNewMessageTemplate = self;
});

AutoForm.hooks({
    serverCall: {
        before: {
            method: function (insert, update, current) {
                insert.foo = myNewMessageTemplate.dict.get('foo'); <-- fails
                Meteor.call('serverCall', insert);
                return true;
            }
        }
    }
});

您需要确保 hooks 和 onCreate 位于同一文件中,处于同一范围内。

关于javascript - 如何从自动表单 Hook 访问模板实例数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31670214/

相关文章:

javascript - 在没有 Canvas 的纯 JS 中生成图像🌇

用户移除文本框焦点时的 Javascript 事件

javascript - Bootstrap 表单动态添加删除带有字段的表单

javascript - JQuery - 从 Selectbox 中删除所有选项,除了 first 和 selected

javascript - meteor JS : Auto-fill form with data from a collection (autoform)

javascript - Meteor 不加载包内的模板,为什么?

javascript - meteor ,自动表格,预填充输入

meteor - 如何隐藏 meteor 服务器 console.log 的日期?

node.js - 如何从外部应用程序写入 Meteor 数据库?

meteor - 与使用 find() 游标的 #each 相比,使用模板如何使用带有一个 'record' 的 {{attribute}} ?