我有一个解决方案,可以很好地做到这一点。但是它像这样使用$rootScope:
angularApp.run(['$rootScope', function($rootScope){
$rootScope.socket = {};
$rootScope.socket.messages = [];
var socket = io.connect('/', {});
socket.on('messages', function (messages) {
if (! angular.equals($rootScope.socket.messages, messages)) {
$rootScope.socket.messages = messages;
$rootScope.$apply();
}
});
}]);
根据文档的最后一段,$rootScope是不好的做法,与全局变量相当:https://docs.angularjs.org/misc/faq
不使用$rootScope的最佳实践是什么?我曾尝试将一个服务与$watch结合使用,但无法正常工作。
你应该创建一个SocketService,并通过依赖注入提供给你的控制器。
依赖注入
理解依赖注入