Как вызвать базовую функцию YUI3 из обычной функции JavaScript? - PullRequest
1 голос
/ 11 июня 2010

Я бы хотел вызвать простую функцию YUI3 из функции JavaScript.Вот код, который делает то, что я хочу, очень многословно:

function changeContent (message) {
    YUI().use("node", function(Y) {
        Y.all('#content-div').setContent(message);
    });
}

Есть ли лучший способ сделать это?Я не хочу прикреплять эту функцию к любому событию, я просто хочу, чтобы была доступна глобальная функция changeContent ().

Ответы [ 2 ]

7 голосов
/ 11 июня 2010

Если вы хотите, чтобы API существовал вне YUI (). Use (... function (Y) {/ * sandbox * /}), вы можете получить возвращенный экземпляр из YUI ().

(function () { // to prevent extra global, we wrap in a function
    var Y = YUI().use('node');

    function changeContent(message) {
        Y.one('#content-div').setContent(message);
    }

    ...
})();

Имейте в виду, что здесь есть условие гонки, если вы используете начальный файл (yui-min.js) и динамический загрузчик для загрузки других модулей. changeContent может быть вызван до того, как Node API будет загружен и добавлен в Y. Вы можете избежать этого, используя комбинированный скрипт заранее. Вы можете получить URL комбо-скрипта из YUI 3 Configurator . Существует потеря производительности для загрузки модулей с блокировкой вперед. Вы можете или не можете заметить это в своем заявлении.

1 голос
/ 11 июня 2010

Вы можете сделать это следующим образом:

(function(){
    YUI().use("node", function(Y) {
         APP = {
    changeContent: function(message){
        Y.all('.content-div').setContent(message);      
    }
         };
    });
})();

Затем вы можете вызвать changeContent, позвонив по номеру APP.changeContent(message); из любого места.Надеюсь это поможет.: D

...