Javascript 通知AngularJS控制器来自外部的事件

Javascript 通知AngularJS控制器来自外部的事件,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我是个新手,所以如果这个问题很愚蠢,我道歉 因此,我正在制作一个应用程序,其中一部分不在Angular的“范围”内,可以说,这一部分负责接收传入消息(xmpp) 还有一个角度控制器,它必须得到关于传入消息的通知。我所做的是一个丑陋的工作,但它的工作: view.html: <button ng-click="refreshLayout()" id="refreshLayoutButton" style="display:none"></button> .controll

我是个新手,所以如果这个问题很愚蠢,我道歉

因此,我正在制作一个应用程序,其中一部分不在Angular的“范围”内,可以说,这一部分负责接收传入消息(xmpp)

还有一个角度控制器,它必须得到关于传入消息的通知。我所做的是一个丑陋的工作,但它的工作:

view.html:

<button ng-click="refreshLayout()" id="refreshLayoutButton" style="display:none"></button>
.controller('chatCtrl', function($scope) {
     $scope.refreshLayout = function() { ... }
})
if(incomingMessage) {
     $("#refreshLayoutButton").click();
     // append the message to view.html
}
outside.js:

<button ng-click="refreshLayout()" id="refreshLayoutButton" style="display:none"></button>
.controller('chatCtrl', function($scope) {
     $scope.refreshLayout = function() { ... }
})
if(incomingMessage) {
     $("#refreshLayoutButton").click();
     // append the message to view.html
}
是否仍有排除jQuery的方法?我想将消息从outside.js发送到chatCtrl,然后发送到view.html

只需通知事件,这样它就可以调用$scope.refreshLayout(从技术上讲,我可以使用jQuery直接将传入消息附加到view.html,而不必使用Angular,但第一个选项更可取)

。。。从技术上讲,我可以使用jQuery直接将传入的消息附加到view.html,而无需任何修改

我强烈建议只使用Angualrjs。(对我来说,我会删除jQuery,只在指令中的特定情况下使用)。Angular本身包含jQueryLite版本

新的角度

请先遵循这个,它会让事情更清楚一些

所以,我希望您的示例中的
outside.js:
意味着获取事件并需要通知控制器的一些指令逻辑

我们可以将事件监听到指令中,例如,指令可以使用
$eval
通知控制器。下面是
$eval
工作原理的基本示例:演示


然而(对于隔离范围),另一种方法只是映射事件方法。请看一看示例,其中谷歌地图将收到的缩放更改事件通知控制器

当有传入消息时,应该触发事件

在outside.js中,当有传入消息时,使用
$broadcast

在controller.js中,使用
$on
等待该事件发生


这里有一个简单的例子:

感谢您的回复。在未定义角度的情况下,如何在外部使用$broadcast?我希望这可以完成工作,而不使用$broadcast。