从视图SailsJS调用视图

时间:2014-11-25 17:37:39

标签: html node.js view sails.js ejs

好的,所以我开始使用基于NodeJS的SailsJS。我使用的模板引擎是EJS(默认值)。

我没有一个线索如何实现以下目标:

父视图名为" main":

<!DOCTYPE html>
<html>
<body>
<div id="someDiv"><%- subviewContent %></div>
</body>
</html>

子视图:

<% main(subviewContent = {
<p>I am inside someDiv of main parent view!</p>
}); %>

控制器应该渲染&#34;子视图&#34;,子视图调用main,最后我们有一个完整的html页面。它看起来如此逻辑和简单,但我无法在此找到任何东西。 有没有人有建议,还是应该切换模板引擎?

1 个答案:

答案 0 :(得分:0)

您正在寻找layout templatesview partials

布局模板

如果您希望每个页面的layout templates(母版页)与特定路线生成的正文相同:

  

Sails布局是应用程序视图/文件夹中的特殊.ejs文件   可以用来“包装”或“夹心”其他视图。布局通常包含   前言(例如!DOCTYPE html ....)和   结论(。布局从未在没有视图的情况下使用 - 那会   就像为某人提供面包三明治一样。您的应用的布局支持   可以在config / views.js中配置或禁用,也可以   通过设置特殊本地来覆盖特定路由或操作   叫布局。默认情况下,Sails将使用。编译所有视图   布局位于views / layout.ejs。

查看部分

如果您希望在多个视图中重复使用部分视图(部分视图),例如侧边栏或联系我们嵌入式表单,则可以使用view partial执行此操作。

Sails在其视图呈现代码中使用ejs-locals,因此在您的视图中可以执行以下操作:

<%- partial ('foo.ejs') %>

渲染部分位于/views/foo.ejs。您的所有本地人将自动发送到部分。 路径相对于视图,即加载部分。因此,如果您在/views/users/view.ejs上有用户视图并想要加载/views/partials/widget.ejs,那么您将使用:

<%- partial ('../../partials/widget.ejs') %>