流星更新模板助手
Meteor update template helper
如果我像这样在 meteor 中设置模板助手:
Template.leaderboard.helpers({
players: function() {
return Players.find({}, { sort: { score: -1, name: 1 } });
});
如何在事件发生后(比如点击)更改订阅。例如,如何在单击事件后反转排序?
最简单的方法是使用全局 Session
对象:
Session.setDefault('order', 1);
Template.leaderboard.helpers({
players: function() {
return Players.find({}, { sort: { score: Session.get('order'), name: 1 } });
}
});
现在在相应的事件挂钩中,您可以像这样切换顺序:
Template.leaderboard.events({
'click': function () {
Session.set('order', - Session.get('order'));
}
});
但是,如果您不想使用 Session
,您也可以在模板实例命名空间中创建一个反应状态变量:
Template.leaderboard.created = function () {
this.order = new ReactiveVar(1);
}
要从助手中访问它,您可以使用:
Template.instance().order.get()
并且在您的事件挂钩中,模板实例将是第二个参数(事件对象之后):
Template.leaderboard.events({
'click': function (e, t) {
t.order.set( - t.order.get() );
}
});
要使上述代码正常工作,您可能需要将 reactive-var
包添加到您的 meteor 应用程序中。
如果我像这样在 meteor 中设置模板助手:
Template.leaderboard.helpers({
players: function() {
return Players.find({}, { sort: { score: -1, name: 1 } });
});
如何在事件发生后(比如点击)更改订阅。例如,如何在单击事件后反转排序?
最简单的方法是使用全局 Session
对象:
Session.setDefault('order', 1);
Template.leaderboard.helpers({
players: function() {
return Players.find({}, { sort: { score: Session.get('order'), name: 1 } });
}
});
现在在相应的事件挂钩中,您可以像这样切换顺序:
Template.leaderboard.events({
'click': function () {
Session.set('order', - Session.get('order'));
}
});
但是,如果您不想使用 Session
,您也可以在模板实例命名空间中创建一个反应状态变量:
Template.leaderboard.created = function () {
this.order = new ReactiveVar(1);
}
要从助手中访问它,您可以使用:
Template.instance().order.get()
并且在您的事件挂钩中,模板实例将是第二个参数(事件对象之后):
Template.leaderboard.events({
'click': function (e, t) {
t.order.set( - t.order.get() );
}
});
要使上述代码正常工作,您可能需要将 reactive-var
包添加到您的 meteor 应用程序中。