2016-02-20 34 views
0

我創建了一個具有隔離範圍的指令,我希望該範圍內的所有項目在注入時獲取服務的特定實現。有幾個方法,我想我能做到的相當於,但想知道是否有更好的方法:如何注入基於範圍的服務的不同實例

  • 不使用注射的一切,而不是指定具體的實現我想要的服務至$ scope.myService,並有項目進入該成員獲得服務
  • 有一個項目$範圍傳遞給服務的方法,這將基於什麼是在$範圍

    我傾向於改變自己的行爲第一個選項。但似乎棱角有能力注入基於$ scope的不同項目,因爲它在注入$ scope本身時就會這樣做,而且我想知道是否可以以某種方式使用該機制。

+0

我不確定我是否正確,您是否需要根據指令的使用位置向指令注入不同的服務實現? –

+0

@MatanHafuta - 關閉。在我的指令裏面,我知道實現應該是什麼,基於傳遞給指令的參數,所以我可以在鏈接函數中構造正確的服務。但是我的指令模板有一個'ng-include',我希望包含的所有控制器都注入這個服務實例。 –

回答

0

根據您的要求,您將必須動態地創建一個控制器使用$控制服務,並作爲第二個參數傳遞的對象注入所需的服務。

$控制器(「ControllerName」,{})

您需要將新創建的控制器的情況下連接到該指令的範圍,並與你的模板NG控制器指令使用它。

相關問題