Meteor Iron Router基于动态名称加载模板

时间:2015-01-04 21:57:52

标签: meteor iron-router

我想使用铁路由器加载流星模板,但我加载的模板需要动态,我尝试了几种不同的方法,但没有一种方法正常工作。

我的路由器

Router.route('/forms/add-form/:template', {
  name: 'addForm',
  layoutTemplate: 'layoutApp',
  waitOn: function() {
    return Meteor.subscribe('producersList');
  },
  data: function() {
    return Producers.find();
  }
}); 

路由器

Router.go('addForm', {template: this.template});

网址很好,现在我第一次尝试在我的路由器中使用

name: this.params.template,

但这不起作用我现在正在我的addForm模板中尝试以下内容

{{> UI.dynamic template=formToLoad data=myDataContext}}

formToLoad:function(){
    console.log('aaaa ' + this.template);
}
});

1 个答案:

答案 0 :(得分:2)

您可以在路线中将数据传递到模板中:

Router.route('/forms/add-form/:template', {
  name: 'addForm',
  layoutTemplate: 'layoutApp',
  waitOn: function() {
    return Meteor.subscribe('producersList');
  },
  data: function() {
    return {
      producers: Producers.find(),
      formToLoad: this.params.template //here pass the template name
    }
  }
});

并在您的模板中:

<template name="addForm">
  {{> Template.dynamic template=formToLoad}}
</template>

现在,如果我们运行:

Router.go('addForm', {template: 'someTemplateName'});

它应该加载名称为“someTemplateName&#39;”的模板。对模板名称使用camelCase语法,因为你会得到语法错误&some; template-name&#39;何时为模板定义帮助器或事件。