Facebook插件不在内容/模板页面上工作

时间:2015-04-05 10:40:12

标签: javascript html facebook aurelia

我对Facebook插件编程很新。我指的是快速入门文件。

在我的网站上,我有一个布局页面和几个内容页面。只有布局页面包含完整的html-head-body结构,其余内容页面包含部分html元素(可以将其视为模板)。

我已将FB.init()脚本仅放在布局页面中,位于body标记下方:

<script>
window.fbAsyncInit = function () {
    FB.init({
        appId: 'MY-APP-ID',
        xfbml: true,
        version: 'v2.3'
    });
};

(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_US/sdk.js";
    fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>

并尝试在我的一个内容页面中使用类似的插件测试集成:

                <div class="col-sm-10 fb-like"
                 data-share="true"
                 data-width="450"
                 data-show-faces="true">

但是当我把它放在内容/模板页面上时,我发现它无效。请注意,在这种情况下,我甚至没有在浏览器控制台中发现任何JavaScript错误。但是,当我直接在布局页面中添加相同内容时,同样有效。

请告诉我这里缺少的东西。

P.S。:同样适用于fb登录(适用于布局,但不适用于模板)。

1 个答案:

答案 0 :(得分:1)

在将模板添加到DOM之前,init正在运行。您为aurelia标记了您的问题,因此我假设您有一个支持该模板的视图模型。考虑利用可用的生命周期回调 -

attached - 一旦呈现模板并附加了VM,就会调用此回调。将FB.init()放在这里就足够了。您可以在父母或孩子中执行此操作,具体取决于您的设置。