Миграция с YUI2 на YUI3 и domready

Я хочу перенести javascript на своем сайте с YU2 на YUI3, но я всего лишь плохой программист-любитель и застрял на первой ловушке.

У меня есть следующий код:

MyApp.Core = function() {  
    return {  
        init: function(e, MyAppConfig) {  
            if (MyAppConfig.tabpanels) {  
                MyApp.Core.prepareTabpanels(MyAppConfig.tabpanels);  
            }  
        },  
        prepareTabpanels: function(tabpanels) {  
            // Code here
        }  
    }  
}();  

var MyAppConfig = {  
    "tabpanels":{"ids":["navigation"]}  
};

YAHOO.util.Event.addListener(window, "load", MyApp.Core.init, MyAppConfig);

Как я могу передать объект MyAppConfig функции MyApp.Core.init с помощью прослушивателя событий YUI3 "domready"?

Заранее спасибо!


person user597009    schedule 02.02.2011    source источник


Ответы (1)


Вы должны быть в состоянии сделать что-то вроде:

var MyApp = {};
    MyApp.Core = function(){ return {  
    init: function(MyAppConfig) {  
        console.log(MyAppConfig);
    },  
        prepareTabpanels: function(tabpanels) {  
    // Code here
    }  
}  
}();

var MyAppConfig = {  
    "tabpanels":{"ids":["navigation"]}  
};

YUI().use('node', 'event', function(Y){
    Y.on('domready', MyApp.Core.init, this, MyAppConfig);
});

Обратите внимание, что событие передается не в качестве первого параметра, а в конфигурации.

Y.on принимает параметры как <event_type>, <callback_function>, <context>, <params>..

любой параметр после третьего элемента передается функции обратного вызова, поэтому MyAppConfig становится первым параметром в вашем файле init.

ИЗМЕНИТЬ См. документацию по API YUI3 здесь: http://developer.yahoo.com/yui/3/api/YUI.html#method_on

person PottyBert    schedule 15.02.2011
comment
Спасибо за ответ, Крис. - person user597009; 22.02.2011