假設我有一個名爲MyFactory
的工廠,我將它注入到多個控制器中。我如何訪問工廠內的控制器範圍?
我目前想到的就如何做到這一點的唯一方法如下:
app.factory('MyFactory', function() {
return function($scope) {
myPublicFunc: function() {
$scope.$on('$destroy', function() { ... });
}
}
});
app.controller('MyController1', ['$scope', MyFactory', function($scope, Myfactory) {
var factory = new MyFactory($scope);
factory.myPublicFunc();
});
但有沒有其他辦法,我可以只在MyFactory
返回{ }
而不是function($scope) { }
,並直接使用工廠( MyFactory.myPublicFunc
),而不必創建一個新的實例new
關鍵字仍然可以訪問每個控制器的$範圍?
服務被設計爲在作用域之間共享,並且不應該依賴於控制器的作用域。我不認爲有辦法做到這一點 –
@KhanhTO我在問題中發佈的例子正在工作,至少有這種方式。 –
我從來沒有談論依賴注入。我只想訪問工廠內的範圍。我仍然認爲我可以對它進行單元測試,我只需要模擬工廠內部的函數,我不需要測試內部的範圍。只有*原因我需要工廠內部的範圍是處理銷燬事件,所以我不必在所有使用該特定工廠的控制器中複製代碼。 –