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

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

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

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

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

【问题讨论】:

    标签: node.js sails.js partial-views


    【解决方案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',
         ...
      ],
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多