我有一个包含助手和事件的模板,如:
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.
如何从事件中重新处理帮助程序?
答案 0 :(得分:0)
在事件中,您要将值设置为ReactiveVar对象。 在帮助程序中,您只需返回此对象的值,帮助程序的行为类似于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();
}