Sails js渲染局部视图

3

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

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

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

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

2个回答

0

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

使用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',
   ...
],

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


0

我认为你对于局部视图的问题看错了地方。 这是一个前端问题。我用的是Angular UI-router来处理这样的局部视图。实际上,我不确定在你解决问题的范围内是否使用angular,所以我会讲得简单一些。如果你觉得我的方法有用,可以评论一下,我会进一步详细说明如何操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接