【问题标题】:angular access service instance inside $rootScope.$on$rootScope.$on 内的角度访问服务实例
【发布时间】:2014-06-15 10:52:30
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript html angularjs


    【解决方案1】:

    撇开关于使用 $rootScope 的坏\最佳实践辩论,您可以像这样访问您的变量:

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

    【讨论】:

    • 这就是我想要的答案。我感谢谢尔盖的建议。
    【解决方案2】:

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

    $rootScope.var = false;
    

    这将与您当前的尝试完全相同级别的 $rootScope 滥用。但是服务是为了避免以这种方式使用 $rootScope 而设计的。快速而肮脏的最佳方法是this

    但更好的方法是调用服务上的方法,而不是在 $rootScope 上发出事件。

    【讨论】:

    • 好的,我会解释情况。我有 websocket 服务,它随时从后端接收消息。当收到消息到 websocket 服务时,它会广播这些消息。从控制器监听消息是不可能的,因为控制器在视图更改时被破坏,所以一些消息可能会丢失。那我有什么选择?。
    • stackoverflow.com/questions/14573023/… 这样的东西更好。
    猜你喜欢
    • 2014-12-30
    • 1970-01-01
    • 2015-03-22
    • 2019-07-25
    • 2018-05-17
    • 2018-07-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多