我正在开展一个项目,为选定的球队/球员提供推特时间表。当我在team / _id页面上时,如何通过方法获取路径属性?
下面是我的客户端javascript,以及来自铁路由器的相关路由。当我输入像#34;爱国者"到" ????"部分,我得到一个结果。我想动态地这样做,我目前将twitter句柄存储在twitter属性下。
Template.tweets.helpers({
teams: function() {
return Teams.find();
},
});
Template.tweets.onRendered(function () {
var twitterHandle = "???";
Meteor.call('getTimeline', twitterHandle, function(err,results){
if (err) {
console.log("error", error);
};
console.log(results);
Session.set("twitter", JSON.parse(results.content));
})
return Session.get("twitter");
});
Router.route('/teams/:_id', {
name: 'teamView',
template: 'teamView',
data: function(){
var currentTeam = this.params._id;
return Teams.findOne({ _id: currentTeam });
var twitterHandle = this.params.twitter;
return Teams.findOne({twitter: twitterHandle});
}
});

<template name="tweets">
<h3>Tweets</h3>
<div class="container">
{{twitter}}
</div>
</template>
&#13;
答案 0 :(得分:1)
您应该能够使用Router.current().params._id
对象访问当前路线中的所有信息。在您的情况下,您可以使用_id
获取var twitterHandle = Router.current().params._id;
参数:
Teams.findOne
根据您的评论进行编辑
我没有注意到您在路由data
功能中两次调用Teams
功能。形成它的外观,您已经将Twitter句柄存储在data
集合中,因此您只需要访问路由返回的Template.tweets.helpers({
twitterData: function() {
//return the data stored in the callback function of the Meteor method call in the onRendered event
return Session.get('twitter');
}
});
Template.tweets.onRendered(function () {
//clear any previously stored data making the call
Session.set('twitter', null);
//property of the team document returned by the data function in the route.
var twitterHandle = this.data.twitter;
Meteor.call('getTimeline', twitterHandle, function(err,results){
if (err) {
console.log("error", error);
} else {
Session.set("twitter", JSON.parse(results.content));
}
});
});
Router.route('/teams/:_id', {
name: 'teamView',
template: 'teamView',
data: function(){
var currentTeam = this.params._id;
return Teams.findOne({ _id: currentTeam });
}
});
<template name="tweets">
<h3>Tweets</h3>
<div class="container">
<!-- twitterData will be an object, so you'll need to figure out what properties to display and use dot notation//-->
{{twitterData}}
</div>
</template>
。
HubContext.Clients.Client(connectionId).AddItemsResult(response);