如何从autoform钩子访问模板实例数据
How to access template instance data from autoform hook
声明一个实例相关的字典
Template.newMessage.onCreated(function () {
var self = this;
self.dict = new ReactiveDict('namedDic');
});
并在helper和events中通过Template.instance().dict.get()
访问它。
然而,autoform在某处嵌套了另一个模板,所以我访问这个字典的代码不再工作:
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在同一个文件中,在同一个作用域中
我以前这样做过:
定义一个帮助器来检索ReactiveDict
Template.newMessage.helpers({
foo : function () {
return Template.instance().dict.get('foo');
}
});
然后,在模板的某个地方包含该帮助器。使用class="hidden"
如果你不想让用户看到它。
<input type="text" class="hidden" value="{{foo}}" data-schema-key="foo" name="foo">
当quickForm提交时,我相信它会查找定义了data-schema-key属性的所有输入(或者可能会查看名称,您可以同时定义这两个属性以确保正确)。
使用这个方法,你不需要定义任何钩子。
相关文章:
- 将新类实例中的数据存储在数组中
- 删除数据网格 (Dojo) 和表 (数据网格) 的实例正确显示
- 猫鼬数据不会保存模型的新实例
- 当有多个 React.js 组件实例具有数据请求时如何处理缓存
- 主干 - 实例化视图包含旧数据
- 将数据表 API 实例存储在对象中
- 如何允许用户在页面上提交同一表单的多个实例并使用 php 存储数据
- 获取在视图实例中定义的具有特定 ID 的数据
- 重新访问了 Python 私有实例数据
- 访问模板的实例范围并注入数据
- 在同一控制器(ng-controller)的不同实例之间共享数据
- 实例检查附加到数据属性的 jQuery 插件实例
- 《烈焰流星》动态实例化模板和数据上下文
- d3.js单击时更改数据(圆环图的多个实例)
- 如何删除多维数据集.js实例的一天之后的事件
- 如何在集成测试中访问ember数据存储实例
- 如何在使用数据表时替换Knockout中的数组实例
- 如何停止数据表实例已启动的所有当前正在进行的 Ajax 查询
- 如何从autoform钩子访问模板实例数据
- 将模板实例数据作为关键字参数传递给嵌套模板