2

我有一个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从闭包范围之外调用?

4

2 回答 2

1

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

于 2012-02-13T17:43:00.433 回答
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'
});
于 2012-02-13T17:44:12.523 回答