我正在关注“SailsCasts”,我想弄清楚如何根据我正在浏览的链接在我的导航栏中的“事件”类中设置 .ejs 模板。

我不想使用页面的“标题”,而且和想象中的一样很弱。我也不想在客户端使用 JavaScript。我希望导航栏 Bootstrap 中的“事件”类根据我正在访问的页面直接写在服务器端。

要通过路由传递的参数?

请您参考如下方法:

您可以根据当前 Controller 和操作在 EJS 文件中设置 HTML 元素的类。此信息存储在所有 View 中公开的名为 req.options 的变量中。

您可以通过以下方式访问使用它:

/views/navigation.ejs

<ul> 
    <li class="<%- (req.options.controller === 'someController' && req.options.action === 'someAction') ? 'active' : ''%>">User list</li> 
</ul> 

如果你打算多次使用这个方法,你应该创建一个全局服务:

/api/services/Helper.js

module.exports = { 
  isCurrentPage: function(req, controller, action) { 
    return (req.options.controller === controller && req.options.action === action) 
  } 
} 

然后,在您的 ejs View 中:

/views/navigation.ejs

<ul> 
    <li class="<%= Helper.isCurrentPage(req, 'users', 'list') ? 'active' : ''%>">User list</li> 
</ul> 

希望对您有所帮助。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!