我正在尝试定义一个新的 ReactiveVar 变量,以便在所有模板部分中访问(例如.事件, .helpers, .render...等(,如下面的代码所示,但我总是收到错误:
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
参数:
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);
});
}
});