Sails js渲染局部视图

时间:2015-11-04 14:52:09

标签: node.js sails.js partial-views

我是SailsJS的新手,所以我对渲染部分视图有疑问。

我来自.NET世界,ASP.NET MVC中的部分视图比帆更聪明。在.NET MVC中,我可以提供一些控制器作为部分视图路径,这个控制器将被执行,部分视图将使用该控制器数据呈现。

例如,我想在我网站的角落显示一些帐户信息。因此在.NET中我可以调用部分视图,提供控制器路径,该控制器将查询帐户信息,将其提供给局部视图,然后将此结果插入到主视图中。 在Sails中,我可以调用部分视图,但部分视图的所有数据(本地)都将从主视图中推送到那里。所以我必须在应用程序中的每个控制器中放置帐户信息吗?

我该如何解决这个问题? 在其他问题中,我发现我可以从req.session获取用户名,但它并不能解决所有情况。例如,如何在页脚中显示三个随机主题?

2 个答案:

答案 0 :(得分:0)

我认为你正在寻找关于部分观点的错误地方。 这是一个前端问题。我用于这种局部视图的是Angular UI-router。实际上我不确定使用角度是否在你的解决方案的范围内,所以我会保持这个简短。如果您认为我的方法很有用,您可以对其进行评论,并且我将进一步详细说明如何执行该方法。

答案 1 :(得分:0)

取决于您使用的模板引擎。

使用ejs,您可以使用<%- include('someview') %><%- include('someview', { mydata: { foo: bar} }) %> 后者允许使用diff数据多次调用include文件。例如。 <%- include('someview', { mydata: foo }) %>会将foo(从本地人)复制到mydata密钥。这将添加到本地人,因此所有其他本地人也可用。

至于提供实际数据,您可以使用风帆服务。只需将数据添加到res.locals.myKeyForTheInclude即可。

您每次都必须致电该服务。 但您可以将它作为中间件添加到config / http中。

middleware: {
  myFoo: myService.myFunc,
  order: [
   ...
  'myFoo', // before router
  'router',
   ...
],

剩下的就是每个模板都需要包含。 你无法避免这种情况,只有模板知道包含的位置。 但是如果你使用布局,那么它可能适合布局。