2
我有一个有几个模块的angularjs应用程序。主要模块看起来类似:AngularJS跨模块在工厂和控制器之间共享数据
var app = angular.module('mainMod', ['apiService']);
app.controller('MainCtrl', function (Socket) {
$scope.objects = {};
// do something with $scope.objects, etc.
});
然后,我有;
var apiService = angular.module('apiService', ['ngResource']); // etc
and;
apiService.factory('Socket', ['$rootScope', function ($rootScope) {
// create a websocket and listen for stuff
// if something happens, update 'objects' in $rootScope
}]);
的事情是,我看到服务Socket
已MainCtrl
被注入,但Socket
服务中,我无法访问$rootScope.objects
。我明白,工厂没有自己的范围,但自从它注入到MainCtrl
之后,不应该将根视器指向范围MainCtrl
?
有一个使用事件的解决方法,但我并不太热衷于此。我已经尝试过成功,但我更喜欢这种方法可行的解决方案。
将对象分配给$ rootScope的代码在哪里? –
我的假设是,'MainCtrl'中的'$ scope'可以从Socket套接字引用(以某种方式)。很明显,使用'$ rootScope'会是错误的。所以为了改进这个问题,我想在'Socket'中替换'$ rootScope',以便引用'Socket'的作用域。 – Ashesh