Meteor.js如何多次使用同名模板

时间:2015-06-19 09:00:25

标签: javascript templates meteor meteor-blaze

如何在不同文件中多次使用相同的模板名称?我为每个页面都有相同的模板命名模式,问题是当例如<template name="defaultContent"></template>已经在另一个页面上使用时,它不能再次使用。

示例网址:

/home
/home/first
/home/second
/home/third

homePage.html

/template: homePage
  template: default
  template: first
  template: second
  template: third

userPage.html

/template: userPage
  template: default
  template: first
  template: second
  template: third

铁路由器代码:

// mainpage
Router.route('/home', function () {
    this.render('homePage');
    this.render('default', {to: 'content'});
});

// subpages
Router.route('/home/:content', function () {
  this.render('homePage');
  var templateName = this.params.content;
  if(Template[templateName]){
    this.render(templateName, {to: 'content'});
  };
});

[更新]顺便说一下,这就是Meteor kitchen解决这个问题的方法:

<template name="CoolPageSubPageBSubPageB1LoremIpsum">

2 个答案:

答案 0 :(得分:1)

您需要将其包装在每页的一个父模板中。如果您要重用的模板名为&#34; defaultContent&#34;。

,则使用{{> defaultContent}}将模板添加到其HTML模板中。

答案 1 :(得分:1)

您无法定义多个具有相同名称的模板。

Meteor在全局对象Template中定义模板(例如,Template.homePage)。一个对象不能有多次相同的字段,因此定义一个模板多次会导致错误(可能是无声的)。

另外,路由器怎么知道你在谈论哪个defaultContent? 你怎么样?

您可以简单地定义多个模板(Template.homeDefaultTemplate.userDefault),而不是阴影模板,这些模板可以让您调试它们并轻松引用它们。