我有
Template.templateName.onCreated(function() {
this.variableName = new ReactiveVar;
this.variableName.set(true);
});
并在templateName
我有一个autoform
。我需要在提交variableName
时将反应变量false
设置为autoform
。
我试过了
AutoForm.hooks({
myForm: {
onSuccess: function(operation, result) {
this.variableName.set(false);
},
}
});
但它不起作用,因为this.
没有引用模板templateName
,因为它在辅助工具和事件中引用。如果我使用会话,它会起作用,因为它们不限于特定模板。
如何更改autoform hook中的反应变量?
我也试过
AutoForm.hooks({
myForm: {
onSuccess: function(operation, result) {
this.template.variableName.set(false);
this.template.parent.variableName.set(false);
this.template.parent().variableName.set(false);
this.template.parentData.variableName.set(false);
this.template.parentData().variableName.set(false);
this.template.parentView.variableName.set(false);
this.template.parentView().variableName.set(false);
},
}
});
使用console.log(this.template)
时,它会打印一个对象。如果我使用console.log(this.template.data)
,我会
Object {id: "myForm", collection: "Meteor.users", type: "update", doc: Object, validation: "submitThenKeyup"…}
我使用反应变量variableName
来确定是显示可编辑的表单还是显示用户的数据。也许有另一种更好的方法来做到这一点。
答案 0 :(得分:1)
编辑onCreated:
Template.templateName.onCreated(function() {
this.variableName = new ReactiveVar(false);
});
您可能需要添加辅助函数来获取Template实例:
Template.templateName.helpers({
getVariableName: function() {
return Template.instance().variableName.get();
}
});
然后您可以在表单逻辑中调用
AutoForm.hooks({
myForm: {
onSuccess: function(operation, result) {
Template.getVariableName.set(false);
},
}
});
MeteorChef有一篇关于反应变量/词典Reactive Variables的精彩文章。