0

ページにリンクのリストとしてTeams表示されているリストがあります。現時点では、テキストボックスがあります。そのリンクをTeamクリックすると、Keyそのリンクが取得されてルートにTeam送信され、によって、データを取得してデータを送り返します。データがJSファイルに正常に返送された場合、名前がテキストボックスに出力されます。/team/:keyTeamKeyTeam

これを変更したいのですが、リンクがクリックされ、データが取得されたときに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

次に、views/team.ejsチームのEJSテンプレートを含むを作成します。res.json()ルートで、テンプレートエンジンへの呼び出しに置き換えます。

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

編集:Jadeテンプレートの使用に関するコメントを読んでください:コードは非常に似ているので、に置き換えteam.ejsteamDetails.jadeください。

また、AJAXリクエストを実行する必要がなくなったため、リンクのクリックイベントを処理するクライアント側のコードを削除することもできます。

于 2013-03-07T12:21:36.843 に答える