我声明一个与实例相关的字典。
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/