Meteor:在其他模板之间插入模板并在模板之间传递数据

Meteor: insert template between other templates and transfer data between templates

我正在使用 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 模板设置一些值 ...

谢谢:)

  1. 使用 {{> yield}} 助手。这将插入您的路线所服务的任何模板。所以.

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

    <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'
    });
    

    基本上,您正在为某些路由创建一个可以 re-used 的控制器,并告诉控制器将名为 "postHeader" 的模板放入 {{> yield "header"} } 区域和 "postFooter" 进入 {{> yield "footer"}} 区域。