我正在尝试定义一个新的 ReactiveVar 变量,以便在所有模板部分(例如 .events、.helpers、.rendered ...等)中访问,如下面的代码所示,但我总是收到错误消息:
Error: Exception in template helper:
ReferenceError: logData is not defined
有人可以告诉我我在这里缺少什么/做错了什么吗?谢谢
代码:
Template.detailedreport.rendered = function() {
var logData = new ReactiveVar;
logData.set([]);
};
Template.detailedreport.helpers({
myCollection: function () {
return logData.get();
}
});
Template.detailedreport.events({
'submit form': function(e) {
e.preventDefault();
var now = Session.get("startDate");
var then = Session.get("endDate");
var custID = Session.get("customer");
var projID = Session.get("project");
Meteor.call('logSummary', now, then, projID, custID, function(error, data){
if(error)
return alert(error.reason);
logData.set(data);
});
}
});
最佳答案
您需要像这样在模板实例上定义 ReactiveVar
:
Template.detailedreport.created = function() {
this.logData = new ReactiveVar([]);
};
然后你就可以像这样在助手中访问它了:
Template.detailedreport.helpers({
myCollection: function () {
return Template.instance().logData.get();
}
});
在事件中你可以使用模板
参数:
Template.detailedreport.events({
'submit form': function(e, template) {
e.preventDefault();
var now = Session.get("startDate");
var then = Session.get("endDate");
var custID = Session.get("customer");
var projID = Session.get("project");
Meteor.call('logSummary', now, then, projID, custID, function(error, data){
if(error){
return alert(error.reason);
}
template.logData.set(data);
});
}
});
关于Meteor 将 Reactive Var 定义为可在 .events 和 .helpers 中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27611696/