所以我有一个加载的页面tournament/:key
,它正在向它传递一个Tournament
对象。正如您从下面看到的,Jade 模板正在访问来自 的每个变量Tournament
,例如,#{tournemantData.name}
这会将Tournament
's打印name
到页面上。的集合matches
实际上存储为 中的数组Tournament
,我想通过 JavaScript 文件访问这些,以便在此页面上使用它们,因为最终我希望生成一组图形括号。
我将如何tournamentData
在 JavaScript 文件中访问它?
app.get('/tournament/:key', function(req, res) {
util.log('Serving request for url [GET] ' + req.route.path);
Tournament.findByKey(req.params.key, function(err, tournamentData){
if(!err && tournamentData){
tournamentData = tournamentData;
//util.log(tournamentData.teams[0]);
res.render('tournamentDetails', { 'tournamentData' : tournamentData, seedsSerialized : JSON.stringify(tournamentData.teams) } );
} else {
util.log('Error in fetching Tournament by key : ' + req.params.key);
res.json({
'retStatus' : 'failure',
'msg' : 'Error in fetching Tournament by key ' + req.params.key
});
}
});
});
玉:
p Name: #{tournamentData.name}
p ID: #{tournamentData._id}
p Key: #{tournamentData.key}
p Teams: #{tournamentData.teams}
p Matches: #{tournamentData.matches}
p Brackets:
div.bracket
#tournamentBrackets
script(type='text/javascript')
var seeds = var rankArray = !{seedsSerialized};
括号.js
numRounds = Math.log(seeds.length) / Math.log(2);
/**
* Randomize array element order in-place.
* Using Fisher-Yates shuffle algorithm.
*/
function shuffleArray(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;
};
shuffleArray(seeds);
var bracketData = {
teams : [ // Matchups
[ seeds[0].name, seeds[1].name ],
[ seeds[2].name, seeds[3].name ]
],
results : [[
[ [1, 0], [1, 0] ],
[ [1, 0], [1, 0] ]
]]
}
$(function() {
$('#tournamentBrackets').bracket({
init: bracketData
});
});
编辑:我已经添加了 JavaScript 文件,这样做是使用 jQuery.bracket(我用来生成漂亮括号的 jQuery 项目),目前您可以看到我已经手动输入了团队的名称。
里面的括号数组与brackets.js
中的格式相同tournamentData.matches
,但基本思想是我想从这个 JavaScript 文件中访问这些信息,以便我可以打印这些团队的括号。
编辑:
$(document).ready(function() {
// tournament is now the same as tournmentData in your express route
var tournamentText = $(#tournamentData).text();
var tournament = JSON.parse(tournamentText);
console.log(tournament, tournament);
$(function() {
$('#tournamentBrackets').bracket({
init: bracketData
});
});
}