我正在尝试将FB like按钮放在我在Angular JS上构建的单页网站上.类似按钮必须显示在控制器显示的视图(不同于index.html)上.但是类似按钮仅在我第一次加载特定视图时出现.如果我在访问另一个视图后回来,则按钮不会显示.下面是在控制器中为视图加载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具有以下代码 -
myView.html
布局= "标准" 数据动作= "喜欢" 的数据显示-面= "假" DATA-份额="真">我尝试了各种方法,比如使用FB.XFBML.Parse(),删除FB sdk的脚本标签并在每次加载时添加它(希望它能像第一次一样工作),尝试使用指令,放置各种观点中的fb-root div现在我很无能为力:|
我觉得问题是在重新访问视图时加载或刷新SDK但我不确定.
将会感谢任何有助于我前进的输入,如果您需要更多信息,请告诉我.
谢谢,山姆.
2 个回答
我相信我找到了解决方案.
在小部件脚本的开头设置FB = null; 并删除"if(d.getElementById(id))return;"
它应该如下所示:
FB = null; (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/pt_BR/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));2023-02-13 12:53 回答光陆光陆光陆user2912405给出的接受答案是完美的.我只想添加一下,如果您使用的是AngularJS
你应该使用:
$scope.$on('$viewContentLoaded', function() { (function(d, s, id) { FB = null; 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&appId=204269043065238"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); });每次我们更改视图时都要重新加载按钮,例如当我们关注链接时
2023-02-13 12:53 回答lookadgo_544撰写答案今天,你开发时遇到什么问题呢?立即提问