在node.js中的活动菜单项和表示
我正在使用node.js
, express
和express-handlebars
。 我在我的布局顶部有一个菜单。
在我的server.js
,我设置了所有页面
app.locals.pages = [ { title: 'Home', link: '/' }, { title: 'About', link: '/about' }, { title: 'Contact', link: '/contact' }, ];
并在布局文件中打印页面
{{#each pages}} <li class="nav-item"> <a class="nav-link" href="{{link}}">{{title}}</a> </li> {{/each}}
但我想添加一个类到当前正在活动的菜单项。
如何保存3个菜单项中的哪一个是活动的?
我不testing这个代码,但它应该工作,但如果你使用把手,你可以试试这个
Ember.Handlebars.helper('isSelected', function(v1,v2, options) { if (v1 && v2) { return new Ember.Handlebars.SafeString("active"); }else{ return new Ember.Handlebars.SafeString("nav-item"); } });
和你的代码
在你的节点js上
router.get('/', function( req, res ){ var pageData = {}; pageData.page_link = 'home'; res.render('template_page', pageData ); });
在您的模板上
{{#each page in pages}} <li class="{{isSelected page.link page_link }}"> <a class="nav-link" href="{{page.link}}">{{page.title}}</a> </li> {{/each}}
再次:我不testing这个。 但处理栏帮手工作正常的HTML元素
您可以传递一个body_id
(或任何其他名称)参数从您的路线到您的意见,例如
router.get('/', function( req, res ){ var pageInfo = {}; pageInfo.body_id = 'homepage'; // assign more parameters relevant for this view here res.render('home_page', pageInfo ); });
现在,在你的视图文件中,将body_id
指定为body_id
的id
即ie
body(id= typeof body_id === "undefined" ? "body_id" : body_id)
现在,你可以pipe理你的CSS中的活动链接
body#home_page .nav_item:nth-child(1), body#about_page .nav_item:nth-child(2), { background-color: red; /* more css styles that you want to give to your active menu item */ }
- 上传文件时抓取API和multer错误
- 在Webstorm节点表示应用程序:router.post()显示错误:未parsing的函数或方法post()
- connect-mongo每秒创build一个新的会话
- 如何找出当前NODE_ENV的快递应用程序正在运行?
- 什么时候应该使用express.js通过独立的node.js
- 使用Socket.io的简单Node.js应用程序无法加载客户端JavaScript
- 在Node.js Passport的Google策略上自定义returnUrl
- 节点JS / Express渲染html,然后下载一个文件相同的GET请求
- 在expressjs中使用node-http-proxy时出错