0

我的页面上有一个Teams显示为链接列表的列表,目前,我有一个文本框....当单击该链接时,该链接TeamKey获取Team并发送到该/team/:key路线,它会搜索Teamby Key,获取数据并将数据发回。如果数据成功发送回 JS 文件,则Team名称将输出到文本框。

我想改变这一点,当点击链接并使用Team.findByKey我想呈现一个新页面('teamDetails')检索数据并将其传递给它的数据时Team。通过这种方式,我可以使每个链接都指向单个页面的Team链接,其中Team's包含完整的详细信息。

知道我将如何调整这/team/:key条路线来做到这一点吗?

JS file

// Setup teamsLink to retrieve Team info for whichever Team was clicked
Team.initTeamsLink = function(){
  $("a.teamLink").live("click", function(e){
    e.preventDefault();
    var teamId = ($(this)[0]).getAttribute('id');

    $.get('/team/'+teamId, function(response){
      if(response.retStatus === 'success'){
        var teamData = response.teamData;
        $('#teamId').val(teamData.key);
        $('#teamName').val(teamData.name);
      } else if(response.retStatus === 'failure'){

      }
    });  
  });
 };

Route

  app.get('/team/:key', function(req, res) {
    util.log('Serving request for url [GET] ' + req.route.path);
    Team.findByKey(req.params.key, function(err, teamData){
      if(!err && teamData){
        teamData = teamData;
        res.json({
          'retStatus' : 'success',
          'teamData' : teamData
        });
      } else {
        util.log('Error in fetching Team by key : ' + req.params.key);
        res.json({
          'retStatus' : 'failure',
          'msg' : 'Error in fetching Team by key ' + req.params.key
        });
      }
    });
  });
4

2 回答 2

2

使用车把模板 - http://handlebarsjs.com/

npm install handlebars
npm install hbs

咖啡脚本:

hbs = require 'hbs'

app.set 'views', __dirname + '/app/views' #folder with your views
app.set 'view engine', 'hbs'
app.use express.bodyParser()
app.use express.methodOverride()

在路由器中:

res.render 'index', {title: 'index'} #view name and context
于 2013-03-07T13:06:05.237 回答
0

代替res.json(),您可以使用模板引擎来呈现单个团队的页面。假设你想使用EJS模板:

npm install ejs

接下来, create views/team.ejs,它将包含团队的 EJS 模板。在您的路线中,替换res.json()为对模板引擎的调用:

res.render('team.ejs', { 'teamData' : teamData });

编辑:只需阅读您关于使用 Jade 模板的评论:代码非常相似,只需替换team.ejsteamDetails.jade.

此外,您可能可以删除处理链接上的点击事件的客户端代码,因为您不想再执行 AJAX 请求。

于 2013-03-07T12:21:36.843 回答