【问题标题】:Meteor: insert template between other templates and transfer data between templatesMeteor:在其他模板之间插入模板,在模板之间传输数据
【发布时间】:2015-03-06 01:55:08
【问题描述】:

我正在使用 Meteor 创建 Web 应用程序。我已经定义我的布局是:

<template name="default_layout">
   {{> header}}
   body code here
   {{> footer}}
</template>

这是我的路由文件:

Router.configure({ layoutTemplate: 'default_layout'
});
Router.map(function() { this.route('post_list', {path: '/'});
});

所以。我有两个问题:

  1. 如何使模板post_list进入default_layout模板的正文代码?
  2. 基于映射页面的每个布局,可能页眉和页脚分别更改内容。那么,模板之间如何联系呢?例如,post_list 模板将为header 模板设置一些值...

谢谢:)

【问题讨论】:

    标签: meteor


    【解决方案1】:
    1. 使用 {{> yield}} 助手。这将插入您的路线所服务的任何模板。所以。

      <template name="default_layout">
         {{> header}}
         {{> yield}}
         {{> footer}}
      </template>
      
    2. 如果您想更改标题中的内容,您将使用“产量区域”。

      <template name="default_layout">
         {{> yield "header"}}
         {{> yield
         {{> yield "footer"}}
      </template>
      

      然后,比如说,在路由控制中,您可以这样做:

      PostController = RouteController.extend({
           yieldRegions: {
               'postHeader': {to: 'header'},
               'postFooter': {to: 'footer'}
           }
       })
      

      然后在您的 post_list 路由中,执行以下操作:

      Router.route('post_list', function(){
          controller: 'postController'
      });
      

      基本上,您正在创建一个可重复用于某些路由的控制器,并告诉控制器将名为“postHeader”的模板放入 {{> yield "header"}} 区域并将“postFooter”放入{{> 产生“页脚”}} 区域。

    【讨论】:

    • 所以。我们将根据我们的目的创建postHeader answerHeader ...,对吧?通常,我们会将 PostController = RouteController.extend ... 放在哪里?与Route.route 相同的文件或应该在不同的文件上。 ?谢谢:)
    • 如果需要,您可以为路由逻辑使用单独的文件,但它们都应该位于名为“lib”的文件夹中,这使得它们在服务器和客户端上都可用。或者,您可以将它们全部放入 lib 文件夹中的一个“router.js”文件中。第一个可能是更好的选择。
    • 例如,你可以有一个“postRoutes.js”文件,里面有一个 PostController 和你的 Router.route('post_list', function()) 路由。
    猜你喜欢
    • 2015-02-13
    • 1970-01-01
    • 2017-03-10
    • 2012-03-08
    • 2016-08-24
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多