2013-04-12 2 views
-1

Итак, на моем шаблоне Jade я передаю ему переменную через маршрут, содержащий массив имен.Node.js/JavaScript - функция изменения переменных окна JavaScript

Вот JavaScript из этого шаблона:

script(type='text/javascript') 
    window.teams = !{JSON.stringify(teams)}; 

teams содержит массив я говорил. Вот JavaScript:

$(function() { 
    // Array of team names 
    var teamNames = []; 
    for(var i = 0; i < teams.length; i++) { 
    teamNames.push(teams[i].name); 
    } 

    var bracketTeams = []; 

    var teamMatches = new Array(); 
    for(var i=0;i<teamNames.length; i+=2) 
    {  
    teamMatches.push([teamNames[i],teamNames[i+1]]); 
    } 

    var bracketData = { 
    teams : teamMatches, 
    results : [[ 
     [ [1, 0], [1, 0] ], 
     [ [1, 0], [1, 0] ] 
     ]] 
    } 
    $('#tournamentBrackets').bracket({ 
     init: bracketData 
    }); 
}); 

Теперь по какой-то причине, функциональность остальной части системы полностью нарушается, когда я добавляю в этом коде JavaScript. Если я прокомментирую это, тогда остальная часть системы работает нормально, если я ее оставлю, кнопки ничего не делают, ссылки никуда не идут, данные не добавляются (хотя данные загружаются, то есть база данных команд указана). Если я загружу страницу, то раскомментируйте JS, страница работает так, как должна.

Любые идеи, что нарушает мою систему в этом коде? Я просто попробовал переименовать window.teams в window.testName, и он все еще сломался. Действительно смущен.

EDIT: HTML генерируется

http://pastebin.com/VdkEfANb

+0

я хотя нефрит требует - перед каждой строкой коды яваскрипта –

+0

@Four_lo Неа, код ниже тег 'script', который в порядке Jade, работает для всего моего другого кода. – germainelol

+0

@Four_lo Это как-то связано с window.teams. Я уверен, но я не понимаю, что .... – germainelol

ответ

1

В Node.js, то window объект, вероятно, не существует. Node.js имеет другой глобальный объект, чем браузеры. В Node.js глобальный объект фактически называется global. Если вы не специально создали объект с именем window, вы, вероятно, получить ReferenceError при попытке присвоить значения window.teams

+0

Значит, вы говорите, что это должно быть 'global.teams', а не' window.teams'? – germainelol

+0

Просто увидел ваш обновленный пост, я пробовал «глобальный».команд, но скобки, созданные из моего JS, на самом деле не появляются при этом, поэтому он не принимает значения в моем JS-файле, используя глобальный – germainelol

+0

И жаль публиковать сообщение, но если я загружу комментарий из JS-файла Я использую, загружаю страницу, раскомментирую JS-файл, страница действительно загружается успешно и функционирует, но затем при переходе на другие страницы снова не работает. Таким образом, значение 'window.teams' загружается, но разбивается на систему – germainelol

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