首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sails js渲染局部视图

Sails js渲染局部视图
EN

Stack Overflow用户
提问于 2015-11-04 22:52:09
回答 2查看 462关注 0票数 3

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

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

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

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

EN

回答 2

Stack Overflow用户

发布于 2016-12-09 22:10:28

我认为你在局部视图上看错了地方。这是一个前端问题,我在这种局部视图中使用的是Angular UI- .What。实际上,我不确定使用angular是否在解决方案的范围内,所以我将保持简短。如果你觉得我的方法有用,你可以评论它,我将进一步详细说明如何做到这一点。

票数 0
EN

Stack Overflow用户

发布于 2017-10-27 22:36:32

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

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

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

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

代码语言:javascript
复制
middleware: {
  myFoo: myService.myFunc,
  order: [
   ...
  'myFoo', // before router
  'router',
   ...
],

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33524887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档