【问题标题】:How to update internal config from outside the namespace?如何从命名空间外部更新内部配置?
【发布时间】:2012-02-13 17:38:14
【问题描述】:

我有一个javascript文件如下

(function (rpc) {

    rpc.loadHomeBanner = rpc_loadHomeBanner;
    function rpc_loadHomeBanner(){

        // AN is used by Sencha Animator as an Animation variable
        rpc.AN ={};

        rpc.AN.Controller = {

            setConfig: function(configData) {
                // update config crap
            }
        };

        var configData = {
           // config crap
        };

        rpc.AN.Controller.setConfig(configData);
    }
})(rpc);

现在在页面的第一次加载时,我调用

rpc.loadHomeBanner(); 

它会在我需要的时候启动。

问题是我有一个 handleOrientationChange 方法需要从命名空间外部更新配置(由于开销,我不想触发 loadHomeBanner 方法)。

 handleOrientationChange: function(){
        // Updating the config for the animation to ensure appropriate width.
        var configData = {
            // config crap
        };
        rpc.AN.Controller.setConfig(configData);
    }

如何在闭包范围之外调用rpc.AN.controller.setConfig

【问题讨论】:

  • 您正在从外部传递rpc,因此您应该能够从rpc 可见的任何地方调用rpc.AN.controller.setConfig。实际上,我在这里没有看到关闭的任何优势。
  • @FelixKling:我希望这不是该模块中的所有代码,Chase 正在展示什么是必要的?

标签: javascript namespaces private-methods


【解决方案1】:

考虑到您已将 rpc 对象传递到该代码模块,它应该已经可以访问了。

【讨论】:

  • hrm...我觉得有点傻。我得到的错误被抛出在 setConfig 方法中。在问愚蠢的问题之前,我应该做更多的故障排除。
【解决方案2】:

您应该创建一个factory

var createRPC = function( rpc ) {
    rpc.AN = {
        Controller: {
            setConfig: function( configData ) {
            }
        }
    };

    return {
        updateConfig: function( configData ) {
            rpc.AN.Controller.setConfig( configData );
        };
    };
};

然后像这样使用它

var rpc = createRPC({});

//handle orientation change
rpc.updateConfig({
    some: 'data'
});

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-06-01
  • 2013-12-18
  • 2015-03-27
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
  • 2017-10-05
  • 2015-01-08
相关资源
最近更新 更多