在角度服务中,注入的依赖关系变得不确定

时间:2015-11-18 19:12:57

标签: angularjs

我有一个有角度的服务:

Website #2

.service("MyService", ["$q", "myDep1", "myDep2", function ($q, myDep1, myDep2) { function aFunction() { //Breakpoint 2 } return { //Breakpoint 1 aFunction: aFunction } }]); (定义服务的位置),Breakpoint 1myDep1已定义。当我的控制器调用myDep2并且我点击aFunction时,这些依赖关系是未定义的(尽管仍定义了$ q)。

给出了什么?我尝试将其更改为Breakpoint 2,但这并未改变任何内容。

3 个答案:

答案 0 :(得分:0)

尝试以下代码

<?php
  $lihat = $_POST['cari'];
  echo $lihat;
?>

现在,在您的控制器中,您可以直接致电.service("MyService", ["$q", "myDep1", "myDep2", function ($q, myDep1, myDep2) { this.aFunction = function() { // myDep1, myDep2 can be accessed here } }]);

答案 1 :(得分:0)

我有一个类似的问题,但有一个.provider

在此尝试我的解决方案Injected Dependency is undefined in Unit Test

答案 2 :(得分:0)

我的用例略有不同,但我的解决方案对我有用。我希望看到一个看起来不那么糟糕的东西,如果有人有一个。

我将依赖项注入函数中,如下所示:

.service("MyService", ["$q", "myDep1", function ($q, myDep1) {

  // add myDep1 as a param in aFunction
  function aFunction(_myDep1_) {
    // myDep1 is in scope via _myDep1_
  }

  // calling aFunction here and passing in myDep1 will pass that dependency into the function
  aFunction(myDep1);

  return { //Breakpoint 1
    aFunction: aFunction
  }
}]);

注意:如果从应用程序中的其他位置调用myService.aFunction(),则必须将myDep1作为参数传递,这绝对是丑陋的。如果你发现你开始做很多事情,你可能会在工作中有一个反模式。我觉得这不是最好的方法,但是在紧要关头可行。