1
我正在關注「SailsCasts」,我想知道如何根據我正在瀏覽的鏈接,在導航欄中從「active」類中設置.ejs模板。如何將「活動」類添加到導航欄?
我不想使用頁面的「標題」以及想象中的很弱。我也不想在客戶端使用JavaScript。我希望導航欄Bootstrap中的「活動」類直接寫在服務器端,具體取決於我訪問的頁面。
要通過路由傳遞的參數?
我正在關注「SailsCasts」,我想知道如何根據我正在瀏覽的鏈接,在導航欄中從「active」類中設置.ejs模板。如何將「活動」類添加到導航欄?
我不想使用頁面的「標題」以及想象中的很弱。我也不想在客戶端使用JavaScript。我希望導航欄Bootstrap中的「活動」類直接寫在服務器端,具體取決於我訪問的頁面。
要通過路由傳遞的參數?
根據當前的控制器和操作,您可以在EJS文件中設置HTML元素的類。該信息存儲在所有視圖中公開的名爲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觀點:
/views/navigation.ejs
<ul>
<li class="<%= Helper.isCurrentPage(req, 'users', 'list') ? 'active' : ''%>">User list</li>
</ul>
希望有所幫助。
感謝您的回覆。但它不起作用。我有一個控制器UserController.js和我寫===用戶,但我有一個錯誤:'用戶沒有定義]'。如果我寫'用戶',那麼我沒有錯誤,但沒有出現。如果我放置或放棄'&&動作等......'也是一樣。怎麼修? – ginolon 2014-10-06 20:15:36
比較運算符右側的變量必須是字符串。例如 <%=(req.options.controller ==='user')? 'active':''%> – abeja 2014-10-07 00:53:53
對不起,@abeja,但Helper.js不起作用。它說錯誤:req沒有定義]。如何? – ginolon 2014-10-07 16:06:03