Sails js渲染局部视图

Posted

技术标签:

【中文标题】Sails js渲染局部视图【英文标题】:Sails js render partial view 【发布时间】:2016-02-05 03:02:12 【问题描述】:

我是 SailsJS 的新手,所以我有一个关于渲染部分视图的问题。

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

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

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

【问题讨论】:

【参考方案1】:

我认为您对部分视图的看法有误。 这是一个前端问题。我用于此类部分视图的是 Angular UI-router。实际上,我不确定使用 angular 是否在您的解决方案范围内,所以我会保持简短。如果你觉得我的方法有用,可以评论,我会进一步详细说明如何做。

【讨论】:

【参考方案2】:

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

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

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

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

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

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

【讨论】:

以上是关于Sails js渲染局部视图的主要内容,如果未能解决你的问题,请参考以下文章

从另一个局部视图渲染局部视图

关于ASP.NET MVC部分视图渲染问题。

在 ASP.NET MVC 中使用 jQuery 渲染局部视图

渲染脚本以在局部视图中使用?

在另一个视图中渲染视图(不是局部视图)

如何在 Spring MVC 中渲染局部视图