我在控制器中有2个操作,比如我有一个Projects
“控制器”和两个操作:.all
和.my
。
all
操作将检索数据库中的所有Project
条记录
并呈现视图以在列表中显示它们。
my
操作也会执行相同的操作,但只会显示这些项目
由当前用户创建的。
如何在我的操作中重复使用all
视图,而不必复制my
操作的视图?如果我在my
操作中调用此代码:
res.render('projects/all',
projects : projects
)
调用控制器中的all
操作,覆盖我的projects
数组。这在Rails中很常见,但在NodeJS中我无法弄清楚如何做到这一点。感谢。
编辑:
以下是我的操作的代码(我已经同时放弃并使用了两个单独的视图all
和my
具有相同的HTML生成代码:
exports.all = function(req, res) {
Project.all(req.db, function(err, projects) {
var viewVars = {
title: "All projects"
};
viewVars = req.db.paginate(req,
viewVars
);
if(!err && projects != null)
{
viewVars.projects = projects;
res.render('projects/all',
viewVars
)
}
else
{
viewVars.projects = [];
viewVars.error_messages = ["No projects available"];
res.render('projects/all',
viewVars
)
}
});
};
exports.my = function(req, res) {
Project.findByCreator(req.db, req.session.user.uri, function(err, projects) {
var viewVars = {
//title: "My projects"
};
viewVars = req.db.paginate(req,
viewVars
);
if(!err && projects != null)
{
viewVars.projects = projects;
res.render('projects/my',
viewVars
)
}
else
{
viewVars.projects = [];
viewVars.info_messages = ["You have not created any projects"];
res.render('projects/my',
viewVars
);
}
});
};
答案 0 :(得分:1)
改变你的路线...
像
这样的东西app.get("/projects/:option(all|my)", yourcontroller);
然后你可以使用
req.params.option
判断要加载哪些数据,并将该数据发送到您的新视图中。