Angular,跨多个模块的提供者

时间:2015-03-04 14:46:52

标签: javascript angularjs

我正在使用提供商尝试使用我自己的一套#34;州"保存。我有一个提供商在其自己的模块中设置并注入2个独立的子模块"我想用它的应用程序。他们每个人都有一个配置设置,他们发送一些我想要保留的信息。我现在遇到的问题是它似乎没有像我想的那样持有信息。我基本上想要在提供者中创建一个大对象,每个模块都会贡献自己的配置。让我说明我的意思。

提供商看起来像这样 -

  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个模块,都这样做,唯一的区别是模块2中的项目是名称module2和mod2。

所以我在每个模块中点击函数控制器来调用提供者和currentState(参见$ get)

所以他们只是做了一个:

 console.log(freshUrl.state);

现在,我遇到问题的是 - 在模块1中,当我点击它时,我只返回模块2的对象({" module":" module2 ... ect) ,当我在模块2中单击它时,我回到未定义。

我的想法是_.extend将所有这些对象组合成currentState,但它似乎并没有按照我的想法工作。可以使用一些帮助,因为我似乎碰壁了。谢谢你的阅读!

基本思想是(像路由一样)模块会单独设置它们的配置,所以我可以预先使用它们 - 所以我希望所有发送的配置对象组合成一个大的currentState对象,因此_.extend。

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

Edit2:我发现这篇文章(http://garabagne.io/2014/06/08/the-life-and-times-of-the-angular-provider/)对提供商来说非常好读,但是我仍然不确定这是否应该解决这个问题。

我认为我已经深入研究了这个问题 - 您是否可以跨多个模块(以模块方式)使用相同的提供程序来拥有一个可以跟踪所有配置变量的地方。似乎答案是否定的,因为他们被认为是单身人士。

0 个答案:

没有答案