我有一個Angular工廠,我使用揭示模塊模式來公開服務接口。工廠使用其他注入依賴項來支持公共服務本身不包含的公共服務。我明白爲什麼下面的代碼被破壞了,但我要問的是,如果有一個標準模式來實現這個目標?我沒有很好的計算出正確的模式,以便在調用公共服務時訪問私有成員/函數。任何指針讚賞。在下面的代碼中,如果控制器調用myfactory.initData();
,則不能訪問私有函數和變量。角度工廠訪問私有函數
(function() {
'use strict';
angular.module('app').factory('myFactory', ['common', 'config', myFactory]);
function myFactory(common, config) {
var data = { cogs: [], widgets: [] };
var dep = config.dependency;
// Return this factory service definition
var service = {
data: data,
initData: initData,
reset: reset
};
return service;
function initData(forceRefresh) {
_private1(); // out of scope, not part of returned service
_private2(); // out of scope, not part of returned service
}
function _private1() {
// get cogs, from non-exposed private
dep.f1();
}
function _private1() {
// get cogs, from non-exposed private
dep.f2();
}
}
})();
他們私人的原因。您應該能夠從公共界面對其進行測試。沒有辦法訪問這些私人。 –
我不明白它爲什麼壞了?如果您需要訪問這些功能,請不要將它們設置爲私人。 – MinusFour
我同意胡安和MinusFour ...它沒有違反規定,他們是私人的原因。原因是我不想將服務的內部結構公開給服務的消費者,但我可能需要使用公共API可以調用的服務進行可重用的登錄。 – pseabury