2010-10-14 3 views
1

Попытка написать лучший JavaScript, woohoo!Почему мой пользовательский модуль недоступен после запуска события YUILoader.onSuccess?

Первый шаг для меня: загрузчик зависимостей YUILoader, поэтому весь мой пользовательский код доступен для использования в надежный момент времени.

Моя текущая среда:

  • YUI (2.8.1) Путь к библиотеке: C: \ WAMP \ WWW \ Lib \ JS \ юй \ 2 \ сборка \ (HTTP: // локальный/Lib/js/yui/2/build /)
  • Все файлы, отладочные и необработанные файлы YUI, расположенные в указанном выше местоположении
  • Путь к пользовательской библиотеке: C: \ wamp \ www \ lib \ js \ (http: // localhost/lib/js /)
  • Пользовательский модуль 'fln-min.js', расположенный в вышеуказанном месте
  • Тестирование в Chrome

Примечания:

Ниже мой пример HTML-страницы, мой пользовательский модуль следует HTML код. Нет CSS или что-то еще фанки, я просто хочу, чтобы это работало как доказательство концепции. Если вы запустите мой код, вы увидите, что оба события onSuccess загораются, но во вложенных данных обратного вызова равно null, и мой пользовательский модуль кажется недоступным. Я пробовал несколько вещей, таких как конкатенация путей, следовательно, «база» в первом экземпляре YUILoader, и прокомментировал второй «полный путь» во втором экземпляре YUILoader.

Демо HTML страница:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>External file Loader</title> 
    <script src="/lib/js/yui/2/build/yuiloader/yuiloader-min.js"></script> 
    <script> 
    new YAHOO.util.YUILoader({ 

    base: '/lib/js/yui/2/build/', 
    require: ['yahoo-dom-event'], 
// require: ['yahoo-dom-event','reset-fonts-grids','container'], 
// allowRollup: true, 
// combine: true, 

    onSuccess: function() { 

    alert('YAHOO: '+YAHOO); 

    var loader = new YAHOO.util.YUILoader(); 
    // 
    loader.addModule({ 
     name:'FLN', 
//  varName:'FLN', 
     type:'js', 
     fullpath:'/lib/js/fln-min.js' 
//  fullpath:'../../../fln-min.js' 
    }); 
    loader.onSuccess = function(o) { 
     // 
     alert('o.data: '+YAHOO.lang.dump(o.data)); 
     alert('FLN: '+FLN); 
     // 
    }; 
    loader.onFailure = function(o) { 
     // 
     alert('Error: '+YAHOO.lang.dump(o)); 
     // 
    }; 
    loader.insert(); 
    } 

    }).insert(); 
    </script> 
</head> 
<body> 
    <div id="output"></div> 
</body> 
</html> 

Пользовательский модуль (FLN-min.js):

var FLN = function(){ 

var _debug = false ; 
var _masterDebug = false ; 

return { 
    loaded: function(){ return true; } 
    } 

}(); 
alert('...'); 

ответ

0

Правильный ответ был: new Loader() # 1 в объект конфигурации отсутствовал обычай имя ключа модуля FLN из его массива requires.

Смежные вопросы