使助手对事件做出反应
Cause helper to react to event
我有一个包含助手和事件的模板,例如:
Template.myTemplate.helpers({
edit: function () {
console.log('helper');
return this.value;
}
});
Template.myTemplate.events({
'click .edit_button': function () {
console.log('click');
// Toggle the value this.value
}
});
通过日志(此处简化)我可以验证在页面上呈现模板时调用了帮助程序。但是,当事件被触发时,帮助程序控制台消息不会被触发。就好像更改值的事件不会触发助手的处理,从而使页面反应不太灵敏。
我曾尝试分配一个反应变量并使用它,但无济于事。
Template.myTemplate.rendered = function () {
this.value = new ReactiveVar();
}
// Setting and getting using the .get()/.set() methods.
如何使助手从事件中重新处理?
在您想要为 ReactiveVar 对象设置值的事件中。
在 helpers 中,您只需 return 这个对象的值,helpers 的行为就像 Tracker.autorun,它们是反应性的。
Template.myTemplate.helpers({
edit: function () {
console.log('helper');
// helpers are wrapped with Tracker.autorun, so any ReactiveVar.get()
// inside this function will cause to rerun it
return Template.instance().value.get()
}
});
Template.myTemplate.events({
'click .edit_button': function (e, tmpl) {
console.log('click');
// here you save value
tmpl.value.set(newValue)
}
});
Template.myTemplate.created = function () {
this.value = new ReactiveVar();
}
我有一个包含助手和事件的模板,例如:
Template.myTemplate.helpers({
edit: function () {
console.log('helper');
return this.value;
}
});
Template.myTemplate.events({
'click .edit_button': function () {
console.log('click');
// Toggle the value this.value
}
});
通过日志(此处简化)我可以验证在页面上呈现模板时调用了帮助程序。但是,当事件被触发时,帮助程序控制台消息不会被触发。就好像更改值的事件不会触发助手的处理,从而使页面反应不太灵敏。
我曾尝试分配一个反应变量并使用它,但无济于事。
Template.myTemplate.rendered = function () {
this.value = new ReactiveVar();
}
// Setting and getting using the .get()/.set() methods.
如何使助手从事件中重新处理?
在您想要为 ReactiveVar 对象设置值的事件中。 在 helpers 中,您只需 return 这个对象的值,helpers 的行为就像 Tracker.autorun,它们是反应性的。
Template.myTemplate.helpers({
edit: function () {
console.log('helper');
// helpers are wrapped with Tracker.autorun, so any ReactiveVar.get()
// inside this function will cause to rerun it
return Template.instance().value.get()
}
});
Template.myTemplate.events({
'click .edit_button': function (e, tmpl) {
console.log('click');
// here you save value
tmpl.value.set(newValue)
}
});
Template.myTemplate.created = function () {
this.value = new ReactiveVar();
}