我正在尝试将FB like按钮放在我在Angular JS上构建的单页网站上.必须在控制器显示的视图(不同于index.html)上显示like按钮.但是,类似按钮仅在我第一次加载特定视图时显示.如果我在访问另一个视图后回来,则按钮不会显示.
下面是在控制器中为视图加载FB SDK的代码 –
下面是在控制器中为视图加载FB SDK的代码 –
(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/all.js#xfbml=1”;
fjs.parentNode.insertBefore(js,fjs);
}(document,‘script’,‘facebook-jssdk’));
index.html具有以下代码 –
<body ng-controller=”mainController”>
<div id=”fb-root”>
myView.html
<div class=”fb-like” data-href=”mySite.com/{{ProductID}}” data-> layout=”standard” data-action=”like” data-show-faces=”false” data-share=”true”>
我尝试了各种方法,比如使用FB.XFBML.Parse(),删除FB sdk的脚本标签并在每次加载时添加它(希望它能像第一次一样工作),尝试使用指令,放置各种观点中的fb-root div现在我一无所知:|
我觉得问题是在重新访问视图时加载或刷新SDK但我不确定.
将会感谢任何有助于我前进的输入,如果您需要更多信息,请告诉我.
谢谢,
山姆.
解决方法
我相信我找到了解决方案.
在小部件脚本的开头设置FB = null;并删除“if(d.getElementById(id))return;”
它应该如下所示:
FB = null; (function(d,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/pt_BR/all.js#xfbml=1"; fjs.parentNode.insertBefore(js,fjs); }(document,'script','facebook-jssdk'));