我很难尝试将对象传递给项目的布局,以获取我需要在导航栏中显示的类别列表。我一直在尝试这里的几个解决方案,所有关于使用策略和分配res.locals.myVar = someObj,问题是res.locals和使用req.options.locals.myVar仅在控制器操作中可用查看而不是布局
到目前为止我得到了这个。
// getRoomList POLICY
Room.find().exec(function(err, rooms) {
if (err) {
return res.badRequest('Something went wrong.');
}
if (rooms) {
res.locals.roomlist = rooms;
next();
} else {
res.notFound();
}
});
// config / policies
'*': 'getRoomList'
//在layout.ejs
中<%= roomlist %>
答案 0 :(得分:0)
我认为可以使用策略将数据保存到res.locals
,但在我的实现中,我将数据保存到请求本身并将其发送到控制器中的视图(对我来说看起来更清晰)
<强>配置/策略/ getCategories 强>
module.exports = function(req, res, next){
Categories.find().exec(function(err, models) {
if (err) return res.badRequest("Error");
req.categories = models;
next();
});
}
<强> API /控制器/ ABCController.js 强>
module.exports = {
index : function(req, res, next){
res.view('page/index', {
categories : req.categories
});
}
}
<强>配置/ policies.js 强>
ABCController : {
index: ['getCategories', 'getProfiles']
// add this policy to any page who needs nav bar categories
}
**配置/ routes.js
'/home/': {
controller: "ABCController",
action: "index"
}