AngularJS:注入参数和$ injector之间的差异

时间:2016-04-05 17:48:01

标签: angularjs angular-material

就像这个人posted here一样,我使用Angular Material的$ md-toast服务来在API调用返回错误时通知用户。我找到了“循环依赖”并找到了(之前引用的)文章。

之间有什么区别
syntax: regexp

# dotfiles
(?<![^/])\.

  .factory('toastHttpInterceptor', function ($mdToast) {
    return {
      responseError: function(response) {
        $mdToast.showSimple('Error');
      }
    };
  });

??第二个如何删除“找到循环依赖”问题?

1 个答案:

答案 0 :(得分:1)

第二个删除循环依赖,因为加载模块时,首先解析对工厂的调用,因此模块理解:

toastHttpInterceptor <- injector

直接或间接地,您的mdToast将具有此依赖路径:

mdToast <- ... <- toastHttpInterceptor

但是当自己调用该代码时,mdToast将被解析为 lazily 。你得到参考懒惰所以你可以使用它,直到你需要它才能获得它,而不是在定义时间获得它。

所以:

  1. 加载时,避免在进样定义中使用圆形路径。这种注射将作为一个整体进行处理,并可能失败。
  2. 修复涉及你知道$mdToast将存在,虽然未指定为依赖(因为你不能),并在代码执行中询问它( 之后>初始化;模块及其部件已加载。)