如何从命名空间外部更新内部配置?

时间:2012-02-13 17:38:15

标签: javascript namespaces private-methods

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您应该创建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'
});