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渲染局部视图的主要内容,如果未能解决你的问题,请参考以下文章