Javascript $rootScope.$on内的angular access服务实例

Javascript $rootScope.$on内的angular access服务实例,javascript,html,angularjs,Javascript,Html,Angularjs,我需要以下代码来访问$rootscope中的服务实例变量 myapp.service('myservice',function($rootScope) { this.var = false; $rootScope.$on('channel',function(e,msg) { var = true; }); }); 如何访问$rootscope.$on.中的myservice.var?您试图解决的这个问题有点不好的方法。在您的情况下,您的服务中已经有$rootSco

我需要以下代码来访问$rootscope中的服务实例变量

myapp.service('myservice',function($rootScope)
{

  this.var = false;
  $rootScope.$on('channel',function(e,msg)
  {
     var = true;
  });
});

如何访问$rootscope.$on.中的myservice.var?

您试图解决的这个问题有点不好的方法。在您的情况下,您的服务中已经有$rootScope,因此您可以编写如下内容:

$rootScope.var = false;
这将是与您当前尝试的$rootScope滥用完全相同的级别。但服务是为了避免以这种方式使用$rootScope而设计的。快速而肮脏地做这件事的最好方法是这样做


但更好的方法是对$rootScope上未发出事件的服务调用方法。

省去关于使用$rootScope的坏\最佳实践争论,您可以如下访问变量:

myapp.service('myservice',function($rootScope) {

  var me = this;
  this.myVar = false;

  $rootScope.$on('channel',function(e,msg) {
     me.myVar = true;
  });

});

好的,我来解释一下情况。我有一个websocket服务,它可以随时从后端接收消息。当消息接收到websocket服务时,它会广播这些消息。由于视图更改时控制器被破坏,因此无法侦听来自控制器的消息,因此某些消息可能会丢失。那么我有什么选择呢?。这样比较好,这就是我想要的答案。我很感激谢尔盖的建议。