Session.set() 在 Meteor 中发生路由事件
Session.set() upon route event in Meteor
我有这个与点击按钮相关的功能:
'click .single-speaker-info a': function(ev, speaker){
ev.preventDefault();
Session.set('selectedDocId', this._id);
}
但我希望它在到达这条路线时发生
Router.route('speaker', {
path:'/speakers/:_id',
template: 'speaker',
data: function(){
return Speakers.findOne(this.params._id);
},
//my attempted solution
selectedDocId: function(){
Session.set('selectedDocId', this._id);
}
});
但是我找不到任何关于如何在路由上执行方法的文档。
这是 Template.helper Im 使用 get
属性 Im 设置
Template.speaker.helpers({
editingDoc: function(){
return Speakers.findOne({_id: Session.get('selectedDocId')});
}
});
But I can't find any documentation on how to execute a method on a route.
Iron Router 提供了一些 hooks:
- onRun <-- 可能是你需要的
- 重新运行
- onBeforeAction
- onAfterAction
- 停止
您可以使用 Template.x.rendered,一旦页面呈现,将执行该块中的任何代码。当然这不会在你的路由器中。
你的情况:
Template.speaker.rendered = function() {
//Get data from router
var data = Router.current().data();
Session.set('selectedDocId', data._id);
}
我有这个与点击按钮相关的功能:
'click .single-speaker-info a': function(ev, speaker){
ev.preventDefault();
Session.set('selectedDocId', this._id);
}
但我希望它在到达这条路线时发生
Router.route('speaker', {
path:'/speakers/:_id',
template: 'speaker',
data: function(){
return Speakers.findOne(this.params._id);
},
//my attempted solution
selectedDocId: function(){
Session.set('selectedDocId', this._id);
}
});
但是我找不到任何关于如何在路由上执行方法的文档。
这是 Template.helper Im 使用 get
属性 Im 设置
Template.speaker.helpers({
editingDoc: function(){
return Speakers.findOne({_id: Session.get('selectedDocId')});
}
});
But I can't find any documentation on how to execute a method on a route.
Iron Router 提供了一些 hooks:
- onRun <-- 可能是你需要的
- 重新运行
- onBeforeAction
- onAfterAction
- 停止
您可以使用 Template.x.rendered,一旦页面呈现,将执行该块中的任何代码。当然这不会在你的路由器中。
你的情况:
Template.speaker.rendered = function() {
//Get data from router
var data = Router.current().data();
Session.set('selectedDocId', data._id);
}