Как обновить внутренний конфиг снаружи пространства имен? - PullRequest
2 голосов
/ 13 февраля 2012

У меня есть файл 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 ]

1 голос
/ 13 февраля 2012

Он уже должен быть доступен, учитывая, что вы передали объект rpc в этот модуль кода.

0 голосов
/ 13 февраля 2012

Вы должны создать 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'
});
...