2015-12-11 13 views
1

我是新来表达节点的,我负责Web应用程序的前端。我需要能够让用户按下一个链接,并将该链接按下时将变量传递给index.js,这个链接可以让用户选择他们想要测试的问题类型。我不认为每个类别都有不同的路线是最好的选择。但因为我是新的,我不知道该怎么做。如何在jade中创建变量以用于node.js

这里是我的链接在玉的代码(我想添加一些东西在这里做我想做的)有一个链接到本文底部的页面截图。

   li.active 
       a(href='freeplay') 
        i.fa.fa-edit 
        span.nav-label Freeplay 
        span.fa.arrow 
       ul.nav.nav-second-level 
        li 
         a(href='freeplay/category') Category1 
        li 
         a(href='freeplay/category') Category2 
        li 
         a(href='freeplay/category') Category3 
        li 
         a(href='freeplay/category') Category4 
        li 
         a(href='freeplay/category') Category5 

这是我的index.js,它处理它。 temp是我想要保存类别字符串的变量。

//Handle the free play request 
router.get('/freeplay' , isAuthenticated, freeplay.startFreePlay); 

//Handle the free play request with category 
router.get('/freeplay/category' , isAuthenticated, freeplay.startCategoryPlay); 

最后,我希望能够在对温度读取变量Node.js的是我要指派用户所选类别的变量。

exports.startFreePlay = function(req, res) { 

//grab a question that the user has not gotten right 
//Get the users logged in id 
userId = req.session.passport.user; 


freePlayLogic.getQuestion(userId, function(question){ 


    res.render("FreePlayQuestion", { question: question , questionID : question._id.toString()}); 
}) 

//Pass the question to render 

}; 

exports.startCategoryPlay = function(req, res){ 
//grab a question that the user has not gotten right 
//Get the users logged in id 
userId = req.session.passport.user; 

/** 
* get a question from category "temp" 
*/ 
freePlayLogic.getQuestionFromCategory(userId, "temp", function(question){ 

    res.render("FreePlayQuestion", { question: question , questionID : question._id.toString()}); 
}) 
} 

在此先感谢您的帮助!

here is a screenshot of the web app with the category choices

+0

我不认为你真正了解什么是玉做的。 Jade只是一种模板语言。它不是一个前端框架。你不能将一个变量从玉石传递给你的节点服务器。您必须具有客户端逻辑,如javascript(浏览器端)才能将值发送回nodejs。 – tsturzl

+0

好吧我很乐意学习。我可以/应该考虑什么?我的背景主要是c和assembly,最近刚刚在我的工程课上学到了java这个学期。这是我第一次处理javascript。 –

+0

我想我不知道你在做什么。在MEAN堆栈上做几个教程并不会有什么坏处,所以您可以理解如何管理服务器和客户端之间的状态,来回发送数据以及了解什么是服务器逻辑和什么是客户端逻辑。 – tsturzl

回答

1

所以它看起来像你试图做的是有一个按钮,将数据发送回服务器。这样做需要向服务器发出另一个请求。您可以添加将处理这个数据像这样的路线......

app.get('/question/:id', function(req, res) { 
    var id = req.params.id; 
    //do something with this id like render a page 
); 

然后你的链接会是这个样子

a(href="/question/1") Question 1 
a(href="/question/2") Question 2 

这应该工作,如果你有任何问题,只是留下评论:)

尝试添加该测试路线

app.get('/test/id', function(req, res) { 
    res.send(req.params.id); 
); 
+0

我想对我来说,感觉应该有一个更好的方式来做,然后为每个按钮做一个新的路线 –

+0

这只添加一条路线,它适用于所有按钮 –

+0

哦...那么我可以根据数字使用某种if语句将一个字符串分配给一个变量?或者我可以直接传递一个字符串....非常感谢回答 –

相关问题