2015-11-18 40 views
0

變得不確定我有一個角服務:注入依賴於角服務

.service("MyService", ["$q", "myDep1", "myDep2", function ($q, myDep1, myDep2) { 
    function aFunction() { 
     //Breakpoint 2 
    } 

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

Breakpoint 1(其中定義的服務),myDep1myDep2定義。當我的控制器調用aFunction而我打到Breakpoint 2時,這些依賴關係是未定義的(儘管$ q仍然定義)。

什麼給?我試圖將其更改爲factory,但這並未改變任何內容。

回答

0

試試下面的代碼

.service("MyService", ["$q", "myDep1", "myDep2", function ($q, myDep1, myDep2) { 
    this.aFunction = function() { 
    // myDep1, myDep2 can be accessed here 
    } 

}]); 

現在,在你的控制器,你可以直接調用MyService.aFunction()

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通過爲PARAM,這絕對是醜陋的。如果你發現你開始做很多事情,你可能在工作時會有一個反模式。我不覺得這是做這件事的最好方法,但是在一個捏它的時候它是有效的。