Meteor,Facebook评论仅在重新加载页面时加载

时间:2015-03-18 17:08:44

标签: meteor

我试图使用Facebook评论(https://developers.facebook.com/docs/plugins/comments)。问题是它们只在刷新页面时才加载,所以如果我来自任何其他路由,我什么也没有加载。我在template.rendered中进行调用,当我到达页面时,无论是刷新还是从其他路径执行时都会正确执行。可能导致此行为的原因是什么?我试着调试这个,但是我看不到任何东西,我尝试过的任何东西都没有。欢呼声。

PS:根据评论中的要求 - Fb函数是一个通用的函数,如下所示:

function loadFbComments() {
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_GB/sdk.js#xfbml=1&appId=694645587257406&version=v2.0";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
}

我在Template.rendered中调用它:

Template.item.rendered = function(){
loadFbComments();
}

HTML:

<div class="fb-comments" data-href="http://developers.facebook.com/docs/plugins/comments/" data-numposts="5" data-colorscheme="light"></div>

路由器:

Router.route('/item/:_id', function () {
  this.render('Item', {
      path: '/:permalink',
    data: function(){
        var permalinkVar = this.params.permalink;
        return Items.findOne({permalink: permalinkVar});
      },
    });
});

这实际上只是标准代码,我想这个问题与Iron Router有关,但它只是一个猜测。

2 个答案:

答案 0 :(得分:0)

我最终将整个评论部分加载到另一个模板中,然后在布局模板(我的主模板)中加载一次。无论如何我在模态中使用注释,因此它默认是隐藏的。这对我有用。

答案 1 :(得分:0)

您需要重新加载包含fb注释的模板。

您可以使用tracker dependency或更新会话变量来执行此操作。

how to make a meteor template helper re-run/render after another template has rendered?