我有一个场景,我需要非角度代码(在本例中为 Facebook 和 Twitter JS sdk)来广播角度控制器可以监听的事件。为什么?初始页面加载后,我通过 AJAX 加载和修改页面中的内容。内容附有多个喜欢/推文按钮(如博客/聚合器的首页)。我想在 Facebook 的“赞”按钮或 Twitter 的“分享”按钮上发生点击时添加事件挂钩 - 页面中有一些,每当获取新内容时,每个都会发生变化(同样,通过 ajax )。
现在,SDK 以不同的方式处理这个问题:
推特
twttr.events.bind('click', function(event){
// here I'd like to somehow
// $rootScope.$broadcast("twitter:clicked", event.currentTarget)
});
FB.Event.subscribe("edge.create", function(resp) {
// here I'd like to somehow
// $rootScope.$broadcast("facebook:clicked", resp)
});
一些控制器
app.controller("SomeController", ['$scope', function($scope) {
$scope.$on("facebook:clicked", function(event, resp) {
// do something with resp
});
$scope.$on("twitter:clicked", function(event, target) {
// do something target
});
}])
这个想法是绑定这些事件处理程序一次,然后在相关控制器中处理广播消息,即使这些控制器在获取新内容时重新创建。
所以基本上,我正在寻找的是一种连接现有和已经初始化的角度应用程序$rootScope
和$broadcast
消息的方法,尽管它不是应用程序的一部分。希望这是有道理的。谢谢。