我有一个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