我有来自http://sharethis.com的社交按钮,我希望将其放在我的应用上的个人资料页面上。我正在使用ui-router进行状态管理和页面转换等。
我把我从sharethis获得的代码放到我的index.html:
<script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
<script type="text/javascript">stLight.options({publisher: "66053d76-64c6-4378-8971-aac043dbbc5d", doNotHash: false, doNotCopy: false, hashAddressBar: false});</script>
以及我的个人资料页面上的标记:
<span class='st_twitter_hcount' displayText='Tweet'></span>
<span class='st_facebook_hcount' displayText='Facebook'></span>
<span class='st_googleplus_hcount' displayText='Google +'></span>
正在发生的事情是社交按钮仅在您在个人资料页面上刷新时加载(我猜这是预期的行为)。如果应用程序引导来自主页,然后您转换到配置文件页面,则它们不会被加载。
我是否可以使用任何技巧重新初始化或重新加载这些javascript文件?
答案 0 :(得分:8)
我花了一些时间调查这个源代码并发现这个创建按钮的功能,在页面控制器上添加这个函数调用,这将添加按钮。
stButtons.makeButtons();
答案 1 :(得分:1)
虽然这可能不是根据文档或最佳实践的最佳方式,但这是我的解决方案。我有一个特殊的视图,我想要加载一组新的ShareThis按钮。所以我创建了一个再次初始化按钮的功能。
这是我在控制器中放置的功能:
$scope.loadShareThis = function() {
stButtons.makeButtons();
}
然后我在我的html中使用ng-init启动函数:
<div ng-init="loadShareThis()">
<share-buttons></sharebuttons>
</div>
答案 2 :(得分:0)
这可能不是答案,因为你想使用shareThis,但我决定使用addthis,因为我没有找到一种方法来使shareThis工作与angular。
Addthis支持异步加载和动态呈现。
您可以按照此处的说明进行操作:http://support.addthis.com/customer/portal/articles/1293805-using-addthis-asynchronously。
然后你可能想把它变成一个角度指令,如下所述:http://www.laurentiu-ciovica.com/2013/07/angularjs-addthis-directive.html
答案 3 :(得分:0)
AlexG和Jeff Callahan的回答给了我指示,但它仍然不适合我。我不得不换行
stButtons.makeButtons()
<$>在$ timeout中,现在可以正常工作。
在HTML中我有(JADE语法)
my-directive(ng-repeat="review in myReviews" ng-init="loadShareThis()")
在我的控制器中我有
$scope.loadShareThis = function() {
$timeout(function(){
stButtons.makeButtons();
});
};
必须使用Angular摘要周期做一些事情。