Meteor Method Call的当前记录的抓取属性

时间:2015-08-11 00:33:28

标签: javascript meteor

我正在开展一个项目,为选定的球队/球员提供推特时间表。当我在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;
&#13;
&#13;

1 个答案:

答案 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);