Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度,跨多个模块提供程序_Javascript_Angularjs - Fatal编程技术网

Javascript 角度,跨多个模块提供程序

Javascript 角度,跨多个模块提供程序,javascript,angularjs,Javascript,Angularjs,我正在使用一个提供商来尝试和玩我自己的一套状态保存。我在自己的模块中设置了一个提供者,并将其注入到我想要使用它的应用程序的两个独立子模块中。他们每个人都有一个配置设置,在那里他们发送一些我想保留的信息。我现在面临的问题是,它似乎没有像我想象的那样保存信息。我基本上想在一个提供者中创建一个大对象,每个模块都有自己的配置。让我来说明我的意思 提供者看起来是这样的- angular. module('urlTesting.testProvider', []) .provider("freshUrl

我正在使用一个提供商来尝试和玩我自己的一套状态保存。我在自己的模块中设置了一个提供者,并将其注入到我想要使用它的应用程序的两个独立子模块中。他们每个人都有一个配置设置,在那里他们发送一些我想保留的信息。我现在面临的问题是,它似乎没有像我想象的那样保存信息。我基本上想在一个提供者中创建一个大对象,每个模块都有自己的配置。让我来说明我的意思

提供者看起来是这样的-

  angular.
module('urlTesting.testProvider', [])
.provider("freshUrl", function(){

    //our state object
    var currentState = {};

    return {
        stateName : function(name){
            //test function
            this.state_name = name;
        },
        addState :  function(modName, item, variables){
            var newState = { "module" : modName, "customUrl" : [{ "name" : item, "options" : variables}]};
            _.extend(currentState, newState);
            console.log(currentState, modName);
        },
        $get: function(){
            return {
                state: currentState
            };
        }
    }
});
不同模块中的配置如下所示:

.config(function(freshUrlProvider){
    //module name, state name, provided state variables
    freshUrlProvider.addState("module1", "mod1", ["true", "false"]);
});
所以我有两个模块,都是这样做的,唯一的区别是模块2中的项目是名称module2和mod2

因此,我在调用提供程序的每个模块中都有单击函数控制器,至于当前状态,请参见$get

所以他们只是做了一个:

 console.log(freshUrl.state);
现在,我遇到了一个问题-在模块1中,当我单击这个时,我只返回模块2的对象{module:module2…etc,当我在模块2中单击它时,我返回未定义的对象

我的想法是,extend将把所有这些对象合并到currentState中,但它似乎不符合我的想法。可能需要一些帮助,因为我似乎碰到了墙。谢谢阅读

其基本思想是,模块将单独设置其配置,以便我可以预先使用它们-因此,我希望将发送的所有配置对象合并到一个大的currentState对象中,从而u.extend

编辑:也许这是一个模块化工厂的工作,而不是一个提供者?我只是想让每个模块在配置中设置其自定义参数会很好-但我看不到如何让它在所有模块中创建和使用一个大对象

Edit2:我发现这篇文章是一篇关于提供者的非常好的阅读,但是我仍然不确定这是否是我应该如何处理这个问题的


我想我已经把它磨练成了一个问题——你能以模块的方式在多个模块中使用同一个提供者来拥有一个跟踪所有配置变量的位置吗?似乎答案是否定的,因为它们被视为单例。

这不是为了解决问题,而是一个想法:既然它们是唯一的,你考虑过吗使用像currentState.module2.mod2=[true,false]?@Shomz啊,是的,我肯定需要重新构造我正在使用的对象,因为我需要检查mod1是否存在。例如,这是一个好主意。在这种情况下,你不必处理_extend,它应该都能正常工作