Vin*_*han 13 events angularjs angularjs-service angularjs-controller angular-broadcast
我正在使用socket.io在我的应用程序中启用聊天,我正在使用服务SocketService
来执行所有套接字的东西.当消息出现时,我想从服务触发控制器的功能,以SocketService
在UI中进行一些更改.所以我想知道如何从服务中访问控制器的功能.示例代码:
.service('SocketService', function ($http,$rootScope,$q) {
this.connect = function(){
var socket = io();
socket.on('connect',function(){
// Call a function named 'someFunction' in controller 'ChatController'
});
}
});
Run Code Online (Sandbox Code Playgroud)
这是服务的示例代码.
现在是控制器的代码
.controller('ChatController',function('SocketService',$scope){
$scope.someFunction = function(){
// Some Code Here
}
});
Run Code Online (Sandbox Code Playgroud)
Pan*_*kar 35
你可以通过使用角度事件$broadcast
或$emit
.
在您的情况下$broadcast
会有所帮助,您需要广播您的事件$rootscope
,可以通过$on
具有相同事件名称的所有子范围进行监听.
码
.service('SocketService', function($http, $rootScope, $q) {
this.connect = function() {
var socket = io();
socket.on('connect', function() {
// Call a function named 'someFunction' in controller 'ChatController'
$rootScope.$broadcast('eventFired', {
data: 'something'
});
});
}
});
.controller('ChatController', function('SocketService', $scope) {
$scope.someFunction = function() {
// Some Code Here
}
$scope.$on('eventFired', function(event, data) {
$scope.someFunction();
})
});
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助你,谢谢.
归档时间: |
|
查看次数: |
19139 次 |
最近记录: |