gpt4 book ai didi

javascript - Angular 工厂访问私有(private)函数

转载 作者:行者123 更新时间:2023-12-03 08:09:52 24 4
gpt4 key购买 nike

我有一个 Angular 工厂,我使用揭示模块模式来公开服务接口(interface)。工厂使用其他注入(inject)的依赖项来支持公共(public)服务本身不包含的公共(public)服务。我理解为什么下面的代码被破坏了,但我要问的是是否有一个标准模式来完成这个?当调用公共(public)服务时,我没有太多运气找出正确的模式来让我访问私有(private)成员/函数。任何指示表示赞赏。在下面的代码中,如果 Controller 调用 myfactory.initData();,则私有(private)函数和变量将不可访问。

(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();
}
}
})();

最佳答案

您无法访问您的私有(private)函数,因为您在范围内没有对它们的任何引用 - 将它们保存到变量中以将它们保留在范围内:

(function () {
'use strict';

angular.module('app').factory('myFactory', ['common', 'config', myFactory]);

function myFactory(common, config) {
var data = { cogs: [], widgets: [] };
var dep = config.dependency;

var _private1 = function() {
// get cogs, from non-exposed private
dep.f1();
}

var _private1 = function() {
// get cogs, from non-exposed private
dep.f2();
}

// 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
}
}
})();

关于javascript - Angular 工厂访问私有(private)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34192757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com